You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多对多多行Join查询:查询完全适配属性组的汽车

解决思路

核心判断逻辑是:某款汽车的全部属性,都被对应属性组的属性集合完整覆盖。
处理时优先对原始表去重,避免汽车的重复属性记录干扰统计结果。

实现SQL

SELECT DISTINCT c.name, pg.`group`
-- 先对car表去重,消除重复记录影响
FROM (SELECT DISTINCT name, property FROM car) c
-- 关联属性组表拿到所有候选组合
CROSS JOIN (SELECT DISTINCT `group`, property FROM property_group) pg
GROUP BY c.name, pg.`group`
-- 过滤不存在属性不匹配的组合
HAVING SUM(CASE WHEN c.property NOT IN (
    SELECT property FROM property_group WHERE `group` = pg.`group`
) THEN 1 ELSE 0 END) = 0

逻辑说明

  1. 内层子查询先对car和property_group表的业务字段去重,就算原始表存在重复数据也不会影响最终统计
  2. CROSS JOIN生成所有汽车和属性组的待校验组合
  3. HAVING条件统计每一组中汽车属性不在属性组内的数量,数量为0就代表汽车所有属性都适配当前属性组
  4. 外层加DISTINCT避免出现重复的(汽车名称,属性组)结果

内容的提问来源于stack exchange,提问作者tvmaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:27:05