cari

Rumah  >  Soal Jawab  >  teks badan

php - Gunakan sql untuk menanyakan 6 catatan terkini di bawah setiap bahagian forum

Jadual bahagian forum:

Jadual siaran forum:

Rendering:

ringa_leeringa_lee2703 hari yang lalu973

membalas semua(5)saya akan balas

  • 给我你的怀抱

    给我你的怀抱2017-06-29 10:10:50

    Rujuk ini

    balas
    0
  • 为情所困

    为情所困2017-06-29 10:10:50

    Jika satu pernyataan SQL tidak dapat melakukan ini, adalah disyorkan untuk menggelungkan semua bahagian, dan setiap bahagian boleh dijadikan indeks komposit menggunakan SELECT ... WHERE fid = ? ORDER BY dateline LIMIT 6 得到最新6条帖子,为提高效率,(fid, dateline).

    Selain itu, adalah mungkin untuk menggunakan pernyataan SQL untuk mengetahui 1 siaran terkini dalam setiap forum, tetapi ia tidak mudah untuk mencuba :-)

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-29 10:10:50

    Gunakan kesatuan, dan kemudian (fid, dateline) serta indeks bersama

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-29 10:10:50

    Jika anda perlu menggunakan satu ayat, gunakan union

    balas
    0
  • 学习ing

    学习ing2017-06-29 10:10:50

    Jika terdapat banyak bahagian, kesatuan lebih menyusahkan SQL berikut boleh mendapatkan hasilnya
    Jika tid dan dateline anda dalam susunan yang sama, anda boleh menulis seperti ini:

    select * 
    from t_tbl a
    where 
        (select count(1) 
         from t_tbl b
         where b.fid=a.fid and a.tid>b.tid)<6 
    order by fid,tid;
    

    Jika pesanan tidak konsisten, gunakan yang berikut:

    select aa.* 
    from 
        (select fid,tid,title,content,dateline,(@rownum:=@rownum+1) rn 
         from t_tbl,(select @rownum:=1) a 
         order by fid,dateline) aa 
    where 
        (select count(1) 
         from 
             (select fid,tid,title,content,dateline,(@rownum:=@rownum+1) rn 
              from t_tbl,(select @rownum:=1) a 
              order by fid,dateline) bb 
         where bb.fid=aa.fid and aa.rn>bb.rn)<6;

    ·········································································· ············
    Selain itu, anda juga boleh memperkenalkan nombor baris dalam kumpulan, yang nampaknya lebih mudah:

    select 
        fid,title,content,dateline 
    from (
        select 
            @gn:=case when @fid=fid then @gn+1 else 1 end gn,
            @fid=fid fid,
            title,
            content,
            dateline
         from t_tbl,(select @gn:=1) a
         order by fid,dateline) aa
    where gn<7;

    balas
    0
  • Batalbalas