如果连接到多个值(不需要的值),如何确保不返回值?

时间:2012-10-02 16:11:29

标签: mysql

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

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

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

我目前的代码是:

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

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

由于

3 个答案:

答案 0 :(得分: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 with Demo

答案 1 :(得分:1)

尝试使用NOT IN

SELECT last_name
FROM lives
WHERE last_name NOT IN
   (
     SELECT last_Name
     FROM lives
     WHERE city = 'Chicago'
   )

答案 2 :(得分:0)

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

Select Last_name, City
from lives
group by Last_name
having group_concat(city) not Regexp 'Chicago'