通过`OR`语句对MySQL进行排序

时间:2013-04-29 14:33:55

标签: mysql sql

我的查询使用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语句来解决这个问题

7 个答案:

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

或类似的东西。