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

如何从SQL查询结果中排除eng_tc表中指定eo、tc组合的行?

解决方法

你的问题出在原查询的关联逻辑上——你用eng_tc作为中间表做了内连接,所以返回的所有(eo, tc)组合必然是eng_tc里存在的,这就是那些你想排除的行会出现的原因。要实现“排除所有存在于eng_tc的eo、tc组合”的需求,你需要调整查询逻辑,不再依赖eng_tc做内连接,而是用它来过滤掉不需要的行。

下面提供两种标准SQL写法,都能满足你的需求:

方法一:使用NOT EXISTS子查询

这种写法逻辑清晰,在多数数据库中性能表现也不错:

SELECT e.eo, e.ac, c.tc, e.ac_05
FROM eng_effect e
JOIN task_c c ON e.ac <> c.ac
WHERE NOT EXISTS (
    SELECT 1
    FROM eng_tc t
    WHERE t.eo = e.eo
      AND t.tc = c.tc
)

逻辑说明:先关联eng_effect和task_c,只保留ac不相等的行;再通过NOT EXISTS过滤掉那些(e.eo, c.tc)组合在eng_tc里存在的行。

方法二:使用LEFT JOIN + IS NULL

这种写法适合习惯用连接语法的场景:

SELECT e.eo, e.ac, c.tc, e.ac_05
FROM eng_effect e
JOIN task_c c ON e.ac <> c.ac
LEFT JOIN eng_tc t ON t.eo = e.eo AND t.tc = c.tc
WHERE t.eo IS NULL

逻辑说明:先关联eng_effect和task_c得到ac不等的行,再左连接eng_tc;最后只保留在eng_tc里找不到匹配的行(即t.eo为NULL的记录),这样就排除了存在于eng_tc的eo、tc组合。

内容的提问来源于stack exchange,提问作者Саят Оразов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:15:32