MySQL使用IN查询的结果按照in()里面的顺序排序

chosen1cwp 2021年07月19日 173次浏览

业务场景

在使用MySQL数据库时,常会用 IN () 关键字来作为查询条件,但查询结果并不是按照IN () 里面的顺序来排序的,
如何实现查询结果按照IN ()里面的顺序来排序呢?

解法

使用 ORDER BY FIELD(字段名,a,b,c,d) 来实现排序,但是这种排序方法是效率很低的排序方式,建议谨慎使用!

示例

SELECT * FROMagent_cbs.sys_calmodeWHEREcalcodeIN ('AB0048','AB0049','AB0060','AB0050','AB0051','AB0052','AB0053','AB0054','AB0055','AB0056','AB0057','AC0058','AB0059','AC0031') ANDdel_flag= '0' ORDER BY FIELD(calcode,'AB0048','AB0049','AB0060','AB0050','AB0051','AB0052','AB0053','AB0054','AB0055','AB0056','AB0057','AC0058','AB0059','AC0031')

demo