根据来自不同列的值排除记录

Posted

技术标签:

【中文标题】根据来自不同列的值排除记录【英文标题】:Exclude Records based on values from a different column 【发布时间】:2012-11-19 09:37:16 【问题描述】:

我有一张如下所示的表格:

| CODE   |  LEVEL1  |  LEVEL2  |  LEVEL3  |   SEC_ID   |
| CODE1  |  LEV1    |  LEV2    |  LEV3    |   123456   |
| CODE2  |  LEV1    |  LEV2    |  LEV3    |   234561   |
| CODE2  |  LEV1    |  LEV2    |  Term    |   345612   |
| CODE3  |  LEV1    |  LEV2    |  LEV3    |   456123   |

我需要我的查询在Level3 列中查找单词“Term”,然后排除具有相同CODE 的每一行。

因此,在上面的示例中,查询将从结果中排除第 2 行和第 3 行。

如果不清楚,请告诉我。

【问题讨论】:

【参考方案1】:

您可以使用NOT EXISTS 排除具有level3 值和相同code 的任何记录:

select *
from yourtable t1
where not exists (select *
                  from yourtable t2
                  where level3 = 'Term'
                   and t1.code = t2.code)

见SQL Fiddle with Demo

结果:

|  CODE | LEVEL1 | LEVEL2 | LEVEL3 | SEC_ID |
---------------------------------------------
| CODE1 |   LEV1 |   LEV2 |   LEV3 | 123456 |
| CODE3 |   LEV1 |   LEV2 |   LEV3 | 456123 |

【讨论】:

感谢 bluefeet,成功了! @user1127683 很高兴为您提供帮助,如果此答案有帮助,请务必通过左侧的复选标记接受。

以上是关于根据来自不同列的值排除记录的主要内容,如果未能解决你的问题,请参考以下文章

Oracle:根据不同列的值选择不同的列

使用来自不同列的值通过数据源填充组合框

聚合后如何有条件地对来自不同列的值求和?

根据来自另一列的不同值计算值

Pyspark - 基于数据框中的 2 列的不同记录

如何根据来自不同列的多个值过滤熊猫表? [复制]