3

我的问题的措辞并不完美,但基本上这就是问题所在。

我在“作品”表中有两列。一列是姓氏列表,另一列是人们居住的城市列表。

我不希望我的查询返回任何住在芝加哥的人。

我目前的代码是:

select lives.last_name 
from lives  
where lives.city <> "Chicago";

但是有些人住在芝加哥和其他地方,比如迈阿密,他们仍然出现。我如何只返回不住在芝加哥而不使用组或计数功能的人(还没有那么远)

谢谢

4

3 回答 3

2

你可以使用这样的东西NOT EXISTS

select a.last_name
from lives a
where not exists (select last_name
                   from lives b
                   where a.last_name = b.last_name
                       and city = 'chicago')

请参阅带有演示的 SQL Fiddle

于 2012-10-02T16:17:15.387 回答
1

尝试使用NOT IN

SELECT last_name
FROM lives
WHERE last_name NOT IN
   (
     SELECT last_Name
     FROM lives
     WHERE city = 'Chicago'
   )
于 2012-10-02T16:16:52.143 回答
0

您可以按姓氏分组选择所有城市,然后过滤不包含芝加哥的记录:

Select Last_name, City
from lives
group by Last_name
having group_concat(city) not Regexp 'Chicago'
于 2012-10-02T18:10:49.093 回答