2012-10-09 100 views
1

我有下表。如何查询 表团队如下:如何在以下情况下编写查询?

ID,Name,City,League 
    1,Name1,City1, A 
    2,Name2,City1, B 
+0

您想要的结果是什么样子? –

+0

你为什么如此戏剧性地改变这个问题?在下面得到的答案中,它没有任何意义。如果你想问一个不同的问题,请问一个新的问题。 –

回答

2

关键是要得到一个COUNT(DISTINCT League)每个城市,而且这个数字比较在整个表联赛COUNT(DISTINCT League)的总数。

SELECT 
    City, 
    COUNT(DISTINCT League) AS numleagues 
FROM yourtable 
GROUP BY City 
/* Only cities which have the same number of distinct leagues as the total number of distinct leagues */ 
HAVING COUNT(DISTINCT League) = (SELECT COUNT(DISTINCT League) FROM yourtable) 

Here it is in action in SQLFiddle

0

对此有不存在的联赛是不是在联赛与城市相关联的列表中的所有城市:

SELECT DISTINCT City FROM Teams T1 WHERE NOT EXISTS 
    (SELECT * FROM Teams T2 WHERE League NOT IN 
     (SELECT League FROM Teams T3 WHERE T3.City = T1.City)) 
0

几乎完全一样,你的英语措辞,但有一个转折点......你想要所有联盟中都有名字的城市,或者想要重述的话,你想要所有的城市,那里没有一个没有名字的城市。

Select Distinct City From Table t 
    Where Not Exists 
    (Select Distinct League From Table L 
    Where Not Exists 
     (Select * From Table 
      Where City = t.City 
      And League = L.League 
      And Name Not in 
        (Select distinct Name from table 
        Where City = t.City)))