3

私の質問は完全には表現されていませんが、基本的にここに質問があります。

テーブル「作品」に2つの列があります。1 つの列は姓のリストで、もう 1 つの列は人々が住んでいる都市のリストです。

クエリでシカゴに住んでいる人を返してほしくありません。

私の現在のコードは次のとおりです。

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

しかし、シカゴと別の場所 (マイアミなど) の両方に住んでいる人もいますが、それでも彼らは現れます。group または count 関数を使用せずにシカゴに住んでいない人だけを返すにはどうすればよいですか (まだそれほどではありません)。

ありがとう

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 に答える