我希望我的主板按照新线程显示在顶部的顺序对线程进行排序,直到创建另一个新线程或在另一个线程中进行了回复。如果发生这种情况,线程将从1下降到2,依此类推。
然而,我现在使用的代码只是这样做:如果创建了一个新线程,它将显示在底部,但是如果你做出回复,它将会显示在顶部。因此,需要修复的只是让它显示在顶部创建的最新线程。
SELECT b.id, b.name, b.subject, b.maintext, b.ip, b.date, b.img, b.replycount, MAX(r.date)
FROM
board b
LEFT JOIN reply r ON r.id = b.id
GROUP BY b.id, b.date
ORDER BY GREATEST(b.date, MAX(r.date)) DESC
LIMIT 50;
答案 0 :(得分:2)
greatest
return null如果任何参数为null =>我建议使用coalesce,如果你关心新的线程和新的回复,但不是关于原始线程的更新:
order by coalesce(MAX(r.date), b.date)
<小时/> 如果你也关心更新(所以b.date可能大于max(r.date)):
order by greatest(b.date, coalesce(MAX(r.date), b.date))