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 :-)
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;
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
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:
Jika pesanan tidak konsisten, gunakan yang berikut:
·········································································· ············
Selain itu, anda juga boleh memperkenalkan nombor baris dalam kumpulan, yang nampaknya lebih mudah: