SQL查询:Subtable中的EXISTS

前端之家收集整理的这篇文章主要介绍了SQL查询:Subtable中的EXISTS前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个表tabData和tabDataDetail.
我想要在Parent-Table(tabDataDetail,FK是fiData)中只有行的父表(tabData)中的所有idData(PK):

> fiActionCode = 11单独
要么
> fiactionCode = 11和fiActionCode = 34

任何其他组合无效.如何获得他们?

我没有成功尝试(慢,给我也只有fiActioncode 34的行):

alt text http://www.bilder-hochladen.net/files/4709-l0.jpg

谢谢你的时间.

编辑:感谢所有的答案.现在我不幸没有足够的时间来检查哪一个是最好的或者是完美的.我把第一个工作作为答案.

EDIT2:我认为标示的答案是真正最有效和最紧凑的解决方案.

EDIT3:Codesleuth的答案很有趣,因为它只返回只有一个fiActionCode = 11的行.很难看到,因为它的唯一真正的20个tabDataDetail-rows ot的41524189总行有两个.无论如何,不​​是100%我问过,或者我正在寻找什么.

解决方法

Select ...
From tabData As T1
Where Exists    (
                Select 1
                From tabDataDetail As TDD1
                Where TDD1.fiData = T1.idData
                    And TDD1.fiactionCode = 11
                )
    And Not Exists    (
                      Select 1
                      From tabDataDetail As TDD1
                      Where TDD1.fiData = T1.idData
                          And TDD1.fiactionCode Not In(11,34)
                    )

为了扩展我的逻辑,第一个检查(修正)是确保存在具有fiActionCode = 11的行.第二个检查通过首先定义我们不想要的一组行来进行.我们不想要任何东西,而不是fiActionCode = 11或34.因为这是我们不想要的一组项,我们搜索该集合中不存在的任何东西.

猜你在找的MsSQL相关文章