0

我有一个在子句中使用OR语句的查询。WHERE

我如何通过它的 OR 语句外观来排序我的元素?例如,想象以下查询:

SELECT id,message,link,data_hora,like_count FROM mensagens 
WHERE message = 'pineapple juice' OR message = 'pineapple' OR messsage = 'juice'

我希望结果首先显示“菠萝汁”结果,然后其他的,我想不出用ORDER BY语句来解决这个问题

4

7 回答 7

8

使用FIELD(). 中最简单的答案MySQL

SELECT
FROM 
WHERE
ORDER BY FIELD(message, 'pineapple juice', 'pineapple', 'juice')
于 2013-04-29T14:35:47.203 回答
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
于 2013-04-29T14:35:32.893 回答
1

这是一种方法:

order by  message = 'pineapple juice' desc, message = 'pineapple' desc, messsage = 'juice' desc

在 MySQL 中,比较返回一个布尔值,该值被解释为 0(假)或 1(真)。将desc真实值放在首位。

于 2013-04-29T14:36:06.637 回答
1
order by case when message = 'pineapple juice' then 1
              when message = 'pineapple' then 2
              when message = 'juice' then 3
         end
于 2013-04-29T14:36:09.517 回答
1

尝试这样的事情:

ORDER BY 消息 = '菠萝汁' DESC,消息 = '菠萝' DESC,消息 = '果汁' DESC

于 2013-04-29T14:56:50.620 回答
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
于 2013-04-29T14:35:35.217 回答
0
ORDER BY CASE message WHEN 'pineapple juice' THEN 2 WHEN 'pineapple' THEN 1 WHEN 'juice' THEN 0 END DESC  

或类似的东西。

于 2013-04-29T14:35:48.463 回答