ORDER BY FIELD无法正常工作 - 错误消息

时间:2012-07-19 12:22:52

标签: mysql

我有这个选择:

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(那是有效的)得到具体的结果,但是按照我想要的方式排序。

帮助你做好准备。

2 个答案:

答案 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 ;