Si une instruction SQL ne peut pas faire cela, il est recommandé de parcourir toutes les sections, et chaque section peut être transformée en un index composite à l'aide de SELECT ... WHERE fid = ? ORDER BY dateline LIMIT 6 得到最新6条帖子,为提高效率,(fid, dateline).
De plus, il est possible d'utiliser une instruction SQL pour connaître les 1 derniers messages de chaque forum, mais ce n'est pas facile. Essayez :-)
S'il y a plusieurs sections, l'union est plus gênante. Le SQL suivant peut obtenir le résultat Si votre tid et votre dateline sont dans le même ordre, vous pouvez écrire comme ceci :
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;
Si la commande est incohérente, utilisez ce qui suit :
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;
·························Ligne de séparation················· · ············· De plus, vous pouvez également introduire le numéro de ligne au sein du groupe, ce qui semble plus simple :
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;
Référez-vous à ceci
Si une instruction SQL ne peut pas faire cela, il est recommandé de parcourir toutes les sections, et chaque section peut être transformée en un index composite à l'aide de
SELECT ... WHERE fid = ? ORDER BY dateline LIMIT 6
得到最新6条帖子,为提高效率,(fid, dateline)
.De plus, il est possible d'utiliser une instruction SQL pour connaître les 1 derniers messages de chaque forum, mais ce n'est pas facile. Essayez :-)
Utilisez union, puis (fid, dateline) plus l'index conjoint
Si vous devez utiliser une phrase, utilisez
union
S'il y a plusieurs sections, l'union est plus gênante. Le SQL suivant peut obtenir le résultat
Si votre tid et votre dateline sont dans le même ordre, vous pouvez écrire comme ceci :
Si la commande est incohérente, utilisez ce qui suit :
·························Ligne de séparation················· · ·············
De plus, vous pouvez également introduire le numéro de ligne au sein du groupe, ce qui semble plus simple :