MySQL 按某个列表排序
我有一个数字列表:(这是现有记录的ID)7,1,3,2,123,55
我有一个 mysql 表,其中包含 colums 和 ,其中 是一个整数主键。我想从此表中选择记录,但按特定顺序选择,例如,,,,,.id
name
id
7
1
3
2
123
55
- 是否可以在MyISAM中查询中执行此操作,而无需任何后处理?
- 最简单的方法是什么?
我有一个数字列表:(这是现有记录的ID)7,1,3,2,123,55
我有一个 mysql 表,其中包含 colums 和 ,其中 是一个整数主键。我想从此表中选择记录,但按特定顺序选择,例如,,,,,.id
name
id
7
1
3
2
123
55
因为,一个简单的就足够了。1 < 3 < 77 < 123
ORDER BY id
但是,如果您想以这种方式排序:,则可以使用函数FIELD()
: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
当行与您列出的任何 id 不匹配时返回,即小于为列出的 id 返回的数字。这意味着,如果查询匹配的行数多于列出的行数,则这些行将首先显示。例如:0
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 77, 3, 123, 1)
在此示例中,具有 ID 的行将首先显示。如果您希望这些行显示在最后,只需反转ID列表并添加:400
DESC
SELECT id, name
FROM mytable
WHERE id IN (77, 3, 123, 1, 400)
ORDER BY FIELD(id, 1, 123, 3, 77) DESC