我知道我可以订购两列
ORDER BY col1 DESC, col2 DESC
例如。
但是对于我来说,这是行不通的。我有一个MySQL查询,我想在其中显示
date
排序的接下来几天的事件,但也要通过名为highlight
的列显示。因为存在3种类型的事件:TOP-Premium(+++),Premium(++)和Free(+)。
现在它的命令是这样的:
-
7th May 2013
+FREE EVENT
++PREMIUM
+++TOP PREMIUM
+++TOP PREMIUM
-
8th May 2013
(same here as on 7th May 2013)
-示例结尾>
因此,正如您所看到的,它要在下一个日期之前下订单,这是正确的!但是我想在顶部订购TOP-Premium-Events,然后是Premium-Events,至少是免费事件。
我当前无法正常工作的查询的结尾是:
ORDER BY e.`date` ASC, e.`highlight` ASC");
感谢您的帮助或建议!
最佳答案
ENUM在内部以数字表示,其顺序在声明中列出。如果将列声明为ENUM('2', '1', '0')
,则'2'
存储为1
,'1'
存储为2
,而'0'
存储为3
。
ORDER BY使用这些内部编号,而不是标签。如果要按标签而不是内部编号订购,则必须使用CAST()
,例如
ORDER BY e.`date` ASC, CAST(e.highlight AS CHAR) ASC
这就是为什么将数字用作ENUM的标签通常不是一个好主意的原因之一。 MySQL documentation建议不要这样做。
关于php - 在MySQL中有两列的ORDER BY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16428598/