我有一个数字列表:7,1,3,2,123,55
(这是现有记录的ids )
我有一个包含id
和name
列的mysql表,其中id
是一个整数主键。我希望从该表中选择记录,但要按特定顺序进行选择,例如7
、1
、3
、2
、123
、55
。
发布于 2011-07-25 08:51:34
既然是1 < 3 < 77 < 123
,那么一个简单的ORDER BY id
就足够了。
但是,如果您想要这样排序:77, 3, 123, 1
,那么您可以使用函数
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1)
ORDER BY FIELD(id, 77, 3, 123, 1)
如果查询匹配的行数多于在FIELD
FIELD
中列出的行数,则为
当某一行与您列出的任何ids都不匹配时,FIELD
将返回0
。这意味着,如果查询匹配的行数多于列出的行数,则这些行将首先出现。例如:
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 77, 3, 123, 1)
在本例中,ID为400
的行将首先出现。如果希望这些行出现在最后,只需颠倒ID列表并添加DESC
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 1, 123, 3, 77) DESC
https://stackoverflow.com/questions/6810793
复制相似问题