【发布时间】:2012-04-30 12:30:14
【问题描述】:
如何在 MySQL 中为 ORDER 使用 IF 条件?
例如,我下面的查询返回错误,
SELECT *
FROM page AS p
WHERE p.parent_id != p.page_id
AND p.type = 'post'
AND p.parent_id = '7'
IF(
'date created' = 'date created',
ORDER BY p.created_on DESC,
ORDER BY p.created_on ASC
)
消息,
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 'IF('创建日期' = '创建日期',按 p.created_on DESC 排序, 由 p 订购。在第 17 行
第一个“创建日期”是可变的。所以如果'date created' = 'date created',
然后ORDER BY p.created_on DESC
否则ORDER BY p.created_on ASC
【问题讨论】:
-
您的问题模棱两可,我的印象是您在问如何动态排序方向,正如我们从您的问题中看到的那样,条件的真假都与 created_on 匹配,它们仅在排序方向(DESC vs ASC)。下一次,让你的问题没有歧义