我的查询使用OR
子句中的WHERE
语句。
如何通过它的OR语句外观来命令我的元素? 例如,假设以下查询:
SELECT id,message,link,data_hora,like_count FROM mensagens
WHERE message = 'pineapple juice' OR message = 'pineapple' OR messsage = 'juice'
我希望结果首先显示“pinapple juice”结果,之后,其他人,我想不出用ORDER BY
语句来解决这个问题
答案 0 :(得分:8)
使用FIELD()
。 MySQL
中最简单的答案。
SELECT
FROM
WHERE
ORDER BY FIELD(message, 'pineapple juice', 'pineapple', 'juice')
答案 1 :(得分:3)
尝试使用CASE
表达式
SELECT id,message,link,data_hora,like_count
FROM mensagens
WHERE message = 'pineapple juice' OR message = 'pineapple' OR messsage = 'juice'
ORDER BY CASE message WHEN 'pineapple juice' THEN 0
WHEN 'pineapple' THEN 1
WHEN 'juice' THEN 2
END
答案 2 :(得分:1)
这是一种方式:
order by message = 'pineapple juice' desc, message = 'pineapple' desc, messsage = 'juice' desc
在MySQL中,比较返回一个布尔值,该值被解释为0(假)或1(真)。 desc
将真值放在首位。
答案 3 :(得分:1)
order by case when message = 'pineapple juice' then 1
when message = 'pineapple' then 2
when message = 'juice' then 3
end
答案 4 :(得分:1)
尝试这样的事情:
ORDER BY message ='pineapple juice'DESC,message ='pineapple'DESC,messsage ='juice'DESC
答案 5 :(得分:0)
order by
case message -- First, the where clause order
when 'pineapple juice' then 1
when 'pineapple' then 2
when 'juice' then 3
else 4 end
, message -- Second, order by message
答案 6 :(得分:0)
ORDER BY CASE message WHEN 'pineapple juice' THEN 2 WHEN 'pineapple' THEN 1 WHEN 'juice' THEN 0 END DESC
或类似的东西。