2

所以,我的代码看起来像这样

mysql_query("SELECT * FROM threads WHERE forum_id = '$id' ORDER BY type,posted DESC") or                                 
die(mysql_error());

“posted”是 time() 的值,选择减少以将最新的放在顶部。“类型”包含 1 或 2。如果是 2,则线程被固定。目前,它在发布后排序,但应该在顶部(固定)的那些在底部。有什么我缺少的修复吗?

4

2 回答 2

3

尝试:ORDER BY type DESC, posted DESC

默认情况下,它按升序排序。您需要为要排序的两个字段指定顺序。

按文档订购

于 2013-02-12T16:47:30.753 回答
2

不要忘记 order by 中的 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

只要任意逻辑返回可以简单排序的内容(例如数字或字符串),排序的复杂程度就没有限制。

于 2013-02-12T16:49:55.860 回答