php - Gunakan sql untuk menanyakan 6 catatan terkini di bawah setiap bahagian forum
ringa_lee
ringa_lee 2017-06-29 10:08:50
0
5
971

Jadual bahagian forum:

Jadual siaran forum:

Rendering:

ringa_lee
ringa_lee

ringa_lee

membalas semua(5)
给我你的怀抱

Rujuk ini

为情所困

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 :-)

淡淡烟草味

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

扔个三星炸死你

Jika anda perlu menggunakan satu ayat, gunakan union

学习ing

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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan