我有这个选择:
SELECT pts_name
FROM products_tecspecs
WHERE pts_id IN ( 5275, 21, 5276, 5277,
5278, 49, 5279 )
ORDER BY FIELD (pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279)
我正在尝试获得结果并按照我想要的方式订购。我找到了this的答案但得到了这个错误:#1305 - FUNCTION database_name.FIELD不存在
我试图用IN(那是有效的)得到具体的结果,但是按照我想要的方式排序。
帮助你做好准备。
答案 0 :(得分:7)
删除函数和括号之间的空格:FIELD (
MySQL解析器不喜欢那里的空格。使用:
FIELD(pts_id, ...)
答案 1 :(得分:2)
您还可以尝试使用自定义顺序的记录按顺序排序子查询
SELECT pts_name
FROM (SELECT pts_name,
CASE pts_id
WHEN 5275 THEN 1
WHEN 21 THEN 2
WHEN 5276 THEN 3
WHEN 5277 THEN 4
WHEN 5278 THEN 5
WHEN 49 THEN 6
WHEN 5279 THEN 7
END AS sort_order
FROM products_tecspecs
WHERE pts_id IN ( 5275, 21, 5276, 5277, 5278, 49, 5279)
) a
ORDER BY a.sort_order ASC ;