MySQL'IN'子句和返回的记录集顺序

lov*_*ing 7 mysql sql

例如:从T中选择*,其中T.id IN(4,78,12,45)

我希望返回的记录集按"IN"子句中的位置排序.我怎样才能做到这一点?

Pau*_*xon 20

你可以使用FIND_IN_SET来做,例如

SELECT * FROM T WHERE T.id IN(4,78,12,45)
ORDER BY FIND_IN_SET(T.id,'4,78,12,45');
Run Code Online (Sandbox Code Playgroud)

虽然您必须复制列表,但如果您在代码中生成查询,则这不是一个大问题.