在MySQL中,我运行了很多带有IN
子句的SELECT
语句。有时我想看到输出表按我在 IN
子句中使用的值顺序排序,而不是按字母/数字排序。
如果我跑了
SELECT id FROM x
WHERE id IN ('1', '3', '2', '0')
我想要输出1, 3, 2, 0
,而不是0, 1, 2, 3
。
有没有办法实现这一点?
谢谢!
通过以下查询,您应该得到所需的内容:
SELECT id FROM x WHERE id IN ('1', '3', '2', '0') ORDER BY FIELD(id, '1', '3', '2', '0')
从MySQL规范中关于FIELD()
:
返回 str 在 str1, str2, str3, ...列表。如果未找到 str,则返回 0。
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field