如何编写SQL查询关联指定Item的对象并按匹配数排序?
解决方案
实现SQL语句
SELECT t1.id, t1.title, COUNT(t3.item_id) AS match_count FROM 表1 t1 JOIN 表3 t3 ON t1.id = t3.object_id WHERE t3.item_id IN (2, 3) GROUP BY t1.id, t1.title ORDER BY match_count DESC, t1.id ASC;
逻辑说明
- 关联筛选:通过
JOIN关联表1(对象表)和表3(关联表),用WHERE子句筛选出关联item_id为2或3的记录; - 统计匹配数:按表1的
id和title分组,用COUNT()统计每个对象匹配的目标item数量; - 排序规则:先按匹配数量
match_count降序排列,数量相同时按对象id升序排列,最终得到预期结果顺序:object 2(2次匹配)、object 3(2次匹配)、object 1(1次匹配)。
内容的提问来源于stack exchange,提问作者user2148956
相关产品推荐
相关产品推荐

