选择对另一列的所有可能值通用的记录

时间:2014-05-28 07:09:47

标签: sql

一张表说table1有3列。 假设第三列是城市。 对于城市,主表是city_master。 我想选择通常可用于所有城市的表格记录

例如:

City_master contain C1 to C4 cities

表1如下

Col1    cOl2   col3_city
ABC      123    C1
ABC      123    C2
ABC      123    C3
ABC      123    C4
ABC      211    C1
ABC      211    C1
ABC      213    C4

这里的预期应该是前4行(意味着col1和col2通常出现在所有城市)

2 个答案:

答案 0 :(得分:3)

首先,您应该使用GROUP BY进行查询,并找到所有ColI,Col2,其中COUNT个不同的城市与City_master表中所有城市的数量相同。然后只需使用Table1

加入它
SELECT *
FROM TABLE1 as T1
JOIN 
  (
     SELECT Col1,Col2 FROM Table1
     GROUP BY Col1,Col2
     HAVING COUNT(DISTINCT col3_city)  = (SELECT COUNT(*) FROM City_master)
   ) as T2 ON T1.Col1=T2.Col1 AND T1.Col2=T2.Col2

SQLFiddle demo

答案 1 :(得分:-1)

select col1, col2
from table1
group by col1, col2
having count(distinct col3_city) = (select count(distinct city) from table_city)