MySQL 按某个列表排序

2022-08-30 15:33:03

我有一个数字列表:(这是现有记录的ID)7,1,3,2,123,55

我有一个 mysql 表,其中包含 colums 和 ,其中 是一个整数主键。我想从此表中选择记录,但按特定顺序选择,例如,,,,,.idnameid713212355

  • 是否可以在MyISAM中查询中执行此操作,而无需任何后处理?
  • 最简单的方法是什么?

答案 1

因为,一个简单的就足够了。1 < 3 < 77 < 123ORDER 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列表并添加:400DESC

SELECT id, name
FROM mytable 
WHERE id IN (77, 3, 123, 1, 400) 
ORDER BY FIELD(id, 1, 123, 3, 77) DESC

答案 2

推荐