mysql - 使用 WHERE IN 子句按顺序抓取行

标签 mysql sql

<分区>

CREATE TABLE users (
    id INT,
    name TEXT
);

INSERT INTO users VALUES
    (1, "John"),
    (2, "Susan"),
    (3, "Timothy"),
    (4, "Robert"),
    (5, "Jim"),
    (6, "Patricia");

$var = $db->prepare("
    SELECT name
        FROM users
        WHERE id IN (3, 2, 4, 6)
");
$var->execute();

这将按照 id 在表中出现的顺序返回一个结果,即“2, 3, 4, 6”。有没有办法按照 WHERE ... IN 子句中指定的顺序对其进行排序?

预期结果为:

+----+
| id |
+----+
|  3 |
|  2 |
|  4 |
|  6 |
+----+

最佳答案

您需要一个order by 来让事情井井有条。一种方法是使用 field():

SELECT name
FROM users
WHERE id IN (3, 2, 4, 6)
ORDER BY field(id, 3, 2, 4, 6);

关于mysql - 使用 WHERE IN 子句按顺序抓取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44594378/

相关文章:

java - 如何为包含许多类的类设计表。 (MySQL)

MySQL “WHERE IN” 产生正确的结果但 “WHERE NOT IN” 没有

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - 如何使用 SQL Server 读取最后一行

java - 如何为 java.sql.DatabaseMetaData#g​​etTables 创建不区分大小写的模式?

mysql - 如何创建对年份进行分组的查询

mysql - IF 内的子查询作为具有空值的列的值

php - 每次加载页面时如何更新 MySQL 表?

mysql - 尝试从 MySQL 中获取日期格式的列数据

sql - 计算Teradata中2个日期之间的时间差