1

我有这个选择:

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) 

我试图得到结果并按照我想要的方式订购它。我找到了这个答案,但得到了这个错误:#1305 - FUNCTION database_name.FIELD 不存在

我正在尝试使用 IN 获得具体结果(这是有效的),但是按照我想要的方式进行排序。

帮助你得到赞赏。

4

2 回答 2

7

删除函数和括号之间的空格:FIELD (
MySQL 解析器不喜欢那里的空格。采用:

FIELD(pts_id, ...)
于 2012-07-19T12:24:46.557 回答
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 ;
于 2012-07-19T12:27:49.170 回答