选择并排序两列MySQL

时间:2013-02-12 16:41:29

标签: php mysql sql-order-by

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

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

“已发布”是时间()的值,并且选择减少以将最新的一个放在顶部。 “type”包含1或2.如果是2,则线程被固定。目前,它在发布之后进行排序,但应该位于顶部(固定)的那些位于底部。有没有我错过的修复?

2 个答案:

答案 0 :(得分:3)

尝试:ORDER BY type DESC, posted DESC

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

ORDER BY Documentation

答案 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

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