Rumah > Soal Jawab > teks badan
Jadual bahagian forum:
Jadual siaran forum:
Rendering:
为情所困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 :-)
学习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;