You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让MySQL查询结果按IN条件指定的ID顺序返回?

按IN条件指定的ID顺序返回查询结果

要让查询结果按照IN子句中给定的ID顺序返回,不同数据库可采用以下针对性方案:

MySQL/MariaDB 实现方式

利用FIELD()函数获取ID在指定列表中的位置,以此作为排序依据:

SELECT * 
FROM `rsoft_module_fields` 
WHERE id IN (3,7,1,5)
ORDER BY FIELD(id, 3,7,1,5);

PostgreSQL 实现方式

可以使用array_position()函数匹配数组中ID的位置:

SELECT * 
FROM rsoft_module_fields 
WHERE id = ANY(ARRAY[3,7,1,5])
ORDER BY array_position(ARRAY[3,7,1,5], id);

也可通过CASE WHEN手动映射排序优先级:

SELECT * 
FROM rsoft_module_fields 
WHERE id IN (3,7,1,5)
ORDER BY 
  CASE id
    WHEN 3 THEN 1
    WHEN 7 THEN 2
    WHEN 1 THEN 3
    WHEN 5 THEN 4
  END;

SQL Server 实现方式

CASE WHEN 映射写法

SELECT * 
FROM rsoft_module_fields 
WHERE id IN (3,7,1,5)
ORDER BY 
  CASE id
    WHEN 3 THEN 1
    WHEN 7 THEN 2
    WHEN 1 THEN 3
    WHEN 5 THEN 4
  END;

CHARINDEX 匹配写法

SELECT * 
FROM rsoft_module_fields 
WHERE id IN (3,7,1,5)
ORDER BY CHARINDEX(',' + CAST(id AS VARCHAR) + ',', ',3,7,1,5,');

通用跨库方案

如果需要适配多种数据库,CASE WHEN的手动映射方式是最稳妥的选择,无数据库函数依赖,逻辑清晰易懂。

内容的提问来源于stack exchange,提问作者Pandiyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:02:37