6

ソフトウェアの一部が欠落しているホストを返すクエリを作成しようとしています。

Host                    Software
A                       Title1
A                       Title2
A                       Title3 
B                       Title1
B                       Title3
C                       Title4
C                       Title3

Title2が欠落しているホスト(BとCである必要があります)を照会するにはどうすればよいですか?COUNTを使用してGROUPBY、HAVING、およびサブクエリを試しましたが、正しい考えがないようです。

4

2 に答える 2

18

これを行う簡単な方法は次のとおりです。

select software
from HostSoftware hs
group by software
having max(case when software = 'Title2' then 1 else 0 end) = 0

これには、相関サブクエリは必要ありません。そして、それはほとんどのデータベースでより良い実行計画をもたらすはずです。

于 2012-05-27T13:26:06.370 に答える
13
SELECT Host FROM HostSoftware
WHERE NOT EXISTS (
    SELECT * FROM HostSoftware AS InnerSoftware
    WHERE InnerSoftware.Host = HostSoftware.Host AND InnerSoftware.Software ='Title2'
)
于 2012-05-27T08:26:37.220 に答える