选择两列MySQL并进行排序


Select and sort on two columns MySQL

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

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

"posted"是时间()的值,选择"reduced"将最新的一个放在顶部。"type"包含1或2。如果是2,则螺纹被固定。目前,它在发布后进行排序,但那些应该在顶部(固定)的在底部。我缺了什么补丁吗?

尝试:ORDER BY type DESC, posted DESC

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

按文档订购

不要忘记order by中的asc/desc适用于每个单独的字段,而不是整个order by子句。

ORDER BY type DESC, posted ASC

MySQL也可以接受任意的排序逻辑,因此对于更复杂的排序要求,您可以使用类似的东西

ORDER BY IF(type=2, 0, 1) AS pinned ASC, posted DESC

只要任意逻辑返回一些琐碎可排序的东西(例如数字或字符串),排序的复杂程度就没有限制。