I have first table that has columns:
1. id 2. key 3. value
And second table(more like the list):
key
I need to get distinct id that contains all keys from second table
I have tried self join but it is very slow. Also I tried COUNT = COUNT but performance the same.
Self join:
select f.id from first join first f2 on f.id = f2.id AND f2.key = f. key
COUNT:
select a.keyfrom @a a where ( select SUM(CASE WHEN k.[key] is not NULL THEN 1 ELSE 0 END) from [b] b LEFT JOIN Second s on s.key= b.[Key] where b.[Key] = a.key) = @KeyCount
Advertisement
Answer
You can also check this-
SELECT A.id FROM TAB1 A INNER JOIN TAB2 B ON A.[key] = B.[Key] GROUP BY A.id HAVING COUNT(DISTINCT A.[key]) = (SELECT COUNT(DISTINCT [Key]) FROM TAB2)