根据来自不同列的值排除记录
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 很高兴为您提供帮助,如果此答案有帮助,请务必通过左侧的复选标记接受。以上是关于根据来自不同列的值排除记录的主要内容,如果未能解决你的问题,请参考以下文章