sql - 查询时保留顺序

标签 sql

我有这个查询,我想保留顺序

SELECT a FROM TABLE WHERE id in (2,45, 87, 10,12, 41, 29)

现在我想要按这个顺序的a值,我的意思是a for 2,然后是a for 45,然后是a for 87。我如何在sql中完成这个

最佳答案

在 MySQL 中,您可以使用 ORDER BY FIELD :

SELECT a
FROM yourtable
WHERE id IN (2, 45, 87, 10, 12, 41, 29)
ORDER BY FIELD (id, 2, 45, 87, 10, 12, 41, 29)

在不支持 FIELD 的数据库中,您可以改用 CASE 表达式:

SELECT a
FROM yourtable
WHERE id IN (2, 45, 87, 10, 12, 41, 29)
ORDER BY CASE
    WHEN id = 2 THEN 1
    WHEN id = 45 THEN 2
    WHEN id = 87 THEN 3
    WHEN id = 10 THEN 4
    WHEN id = 12 THEN 5
    WHEN id = 41 THEN 6
    WHEN id = 29 THEN 7
END

关于sql - 查询时保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10266082/

相关文章:

sql - 加快 Access 2016年查询

mysql - 每个字段可以有多个值

mysql - 与 MYSQL/Doctrine 的 N 对 N 对 N 关系

mysql - 如何让连续 3 周或以上的用户有订单?

c# - 使用 C# Windows 窗体中 SQL 查询的大量结果填充 dataGridView

sql - 冲突时增加文本列 "cool name"--> "cool name 1"

mysql - SQL查询查找下一个版本号

sql - 在 SQL 中获取一列按另一列分组时的 SUM

mysql - 全文搜索不适用于 mysql 中的 varchar

mysql - 将列属性设置为日期和时间