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

求助:调试SQL查询以获取同时包含AN和DE的id

问题分析与解决方案

你的SQL语句不生效的核心原因:EXISTS条件要求当前行的type_id同时对应AN和DE,但每个type_id在表D中只能关联一个type_name,因此永远找不到符合条件的行。

以下是两种可行的解决方案,均支持扩展更多type_name条件:

方案一:分组统计法(推荐,简洁易扩展)

通过关联两张表筛选目标type_name,按id分组后统计不同type_name的数量,确保数量与需要匹配的条件数一致:

SELECT C.id
FROM C
JOIN D ON C.type_id = D.type_id
WHERE D.type_name IN ('AN', 'DE') -- 可在此添加更多需要匹配的type_name
GROUP BY C.id
HAVING COUNT(DISTINCT D.type_name) = 2; -- 数字需与IN中的元素数量保持一致

方案二:多EXISTS验证法(逻辑直观)

每个EXISTS子查询单独验证该id是否存在对应的type_name关联:

SELECT DISTINCT C.id
FROM C
WHERE EXISTS (
    SELECT 1
    FROM C C1
    JOIN D D1 ON C1.type_id = D1.type_id
    WHERE C1.id = C.id AND D1.type_name = 'AN'
)
AND EXISTS (
    SELECT 1
    FROM C C2
    JOIN D D2 ON C2.type_id = D2.type_id
    WHERE C2.id = C.id AND D2.type_name = 'DE'
);

内容的提问来源于stack exchange,提问作者M.B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:41:14