以我提供的OR语句的顺序命令mysql查询

时间:2013-01-31 02:53:15

标签: mysql sql

这是一个查询:

SELECT * 
  FROM table
 WHERE id = 1
    OR id = 100
    OR id = 50

请注意,我按此顺序提供了ID:1,100,50。

我希望行按此顺序返回:1,100,50。

目前,我回来了1,50,100 - 基本上按升序排列。假设表中的行也按升序插入。

5 个答案:

答案 0 :(得分:3)

使用MySQL特定的FIND_IN_SET函数:

  SELECT t.* 
    FROM table t
   WHERE t.id IN (1, 100, 50)
ORDER BY FIND_IN_SET(CAST(t.id AS VARCHAR(8)), '1,100,50')

答案 1 :(得分:2)

另一种方法是将列表放在子查询中:

select table.*
from table join
     (select 1 as id, 1 as ordering union all
      select 100 as id, 2 as ordering union all
      select 50 as id, 3 as ordering
     ) list
     on table.id = list.id
order by list.ordering

答案 2 :(得分:0)

您可以使用ORDER BY执行此操作:

ORDER BY
   id = 1 DESC, id = 100 DESC, id = 50 DESC

01之前的ORDER BY之前。

答案 3 :(得分:0)

试试这个

SELECT * 
FROM new
WHERE ID =1
OR ID =100
OR ID =50
ORDER BY ID=1 DESC,ID=100 DESC,ID=50 DESC ;

http://www.sqlfiddle.com/#!2/796e2/5

答案 4 :(得分:0)

... WHERE id IN(x,y,x)ORDER BY FIELD(id,x,y,z)