mysql - SQL order元素按其他表字段但按一定顺序
问题描述
我有 2 张桌子:
- 表
object
:ID
title
- 表
category
:ID
title
object_id
我想设置一个查询以按自定义顺序按类别获取对象,例如,类别 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
。
解决方案
将您的订单更改为
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
为了实现你的目标
推荐阅读
- django - 如何在 Hostgator 上使用 FTP 或 cPanel 托管 Django 项目
- reactjs - 为什么无法在反应中加载详细信息页面
- mongodb - 如何平衡 MongoDB 中的分片集合
- asp.net-mvc - 自动打印功能而不是 MVC 中的 javascript
- r - gsub 在匹配时忽略大小写,但输出应遵循原始大小写
- sparql - Wikidata:仅过滤当前有效的邮政编码
- android - 如何在 MacBook M1 上的 Android 模拟器中为 API 30 和 29 获取 ARM 64?
- opencascade - 如何找到构成 stp 文件面的顶点和三角形
- authentication - ASP.Net Core MVC IdentityFrameWork 不工作
- javascript - 如何通过创建反应应用启用 JIT(即时模式)?