40

我有以下查询

SELECT * FROM table WHERE id IN (5,4,3,1,6)

我想按照“id in..”中指定的顺序检索元素,这意味着它应该返回:

5 ....
4 ....
3 ....
1 ....
6 ....

任何想法如何做到这一点?

4

4 回答 4

75

使用FIELD()

SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD(id, 5,4,3,1,6);
于 2011-02-23T12:07:07.047 回答
26
SELECT * FROM table WHERE id IN (5,4,3,1,6) ORDER BY FIELD (id, 5,4,3,1,6)
于 2011-02-23T12:06:27.870 回答
2

万一有人还在搜索我刚刚找到它..

SELECT * FROM `table` WHERE `id` IN (4, 3, 1) ORDER BY FIELD(`id`, 4, 3, 1)

以及您可以在此处找到的功能参考

于 2011-02-23T12:10:56.220 回答
-1

那么你将不得不为每个id创建一个id,所以:

编号 | 其他

1 = 5 2 = 4 3 = 3 4 = 1 6 = 6

使用 IN STATEMENT 仅查看这些值是否在列表中,不按任何特定顺序对它们进行排序

于 2011-02-23T12:03:48.707 回答