所以,我的代码看起来像这样
mysql_query("SELECT * FROM threads WHERE forum_id = '$id' ORDER BY type,posted DESC") or
die(mysql_error());
“已发布”是时间()的值,并且选择减少以将最新的一个放在顶部。 “type”包含1或2.如果是2,则线程被固定。目前,它在发布之后进行排序,但应该位于顶部(固定)的那些位于底部。有没有我错过的修复?
答案 0 :(得分:3)
答案 1 :(得分:2)
不要忘记订单中的asc / desc适用于每个单独的字段,而不是整个order by子句。
ORDER BY type DESC, posted ASC
MySQL也可以为order by接受任意逻辑,因此对于更复杂的排序要求,你可能会有类似
的东西ORDER BY IF(type=2, 0, 1) AS pinned ASC, posted DESC
只要任意逻辑返回一些可以轻易排序的东西(例如数字或字符串),排序的复杂程度就没有限制。