首页 > 解决方案 > SQL order元素按其他表字段但按一定顺序

问题描述

我有 2 张桌子:

我想设置一个查询以按自定义顺序按类别获取对象,例如,类别 ID 为 214 的第一个对象,第二个 219 等。

我正在做这个查询:

SELECT SQL_CALC_FOUND_ROWS
  object.* 
FROM object
INNER JOIN category
  ON category.object_id = object.ID 
WHERE 1 = 1
GROUP BY object.ID 
ORDER BY
  CASE category.ID 
    WHEN 214 THEN 1 
    WHEN 219 THEN 2 
    WHEN 220 THEN 3 
    WHEN 216 THEN 4 
    WHEN 222 THEN 5 
    WHEN 223 THEN 6 
    WHEN 225 THEN 7 
    WHEN 218 THEN 8 
    WHEN 326 THEN 9 
    WHEN 224 THEN 10 
    WHEN 221 THEN 11 
    WHEN 215 THEN 12 
    WHEN 229 THEN 13 
    WHEN 228 THEN 14 
    WHEN 217 THEN 15 
    WHEN 188 THEN 16 
    WHEN 230 THEN 17 
    WHEN 327 THEN 18 
  END ASC
  , object.title ASC
LIMIT 0, 23

但它不起作用,它返回 order byobject.title但不是 by 的对象category.ID

标签: mysqlwordpress

解决方案


将您的订单更改为

ORDER BY FIELD(category.ID,214,219,220,216,222,223,225,218,326,224,221,215,229,
  228,217,188,230,327),object.title ASC

为了实现你的目标


推荐阅读