1

このクエリはどういう意味ですか

  select fname, lname  
  from Owner 
  where not exists 
      (select fname, lname 
            from Trainer)

私が理解していること:テーブルトレーナーにこれらの名前が存在しないテーブル所有者からfnameとlnameを返しますか?私は正しいですか?

4

3 に答える 3

3

Ownerテーブルには存在するがテーブルには存在しない人の名前を見つけTrainerます。

于 2010-12-16T20:40:10.070 に答える
2

ownerこれは、テーブルに存在しないテーブルから全員のリストを取得するための非常に不完全な方法trainerです。

したがって、Ownerテーブルにが含まれている場合

----------------
fname   | lname
----------------
clark   | kent
lois    | lane
peter   | parker

トレーナーテーブルには

----------------
fname   | lname
----------------
peter   | parker
hal     | jordan

結果セットを取得する必要があります。

----------------
fname   | lname
----------------
clark   | kent
lois    | lane

アップデート

実際、Trainerテーブルにレコードがある場合、クエリは何も返しません。おそらく次のものを使用する必要があります。

select fname, lname
from Owners
where not exists (
    select fname, lname 
    from trainers 
    where fname=Owners.fname 
          and lname=Owners.lname
    )
于 2010-12-16T20:41:13.777 に答える
1

クエリには、「select」と「where」の 2 つの部分があります。最初に where 部分を見てください。

  where not exists 
      (select fname, lname from Trainer)

この where 句は、Trainer テーブルに何もない場合は「true」と評価され、そこに何かがある場合は「false」と評価されます。次に、「選択」部分を見てください。

  select fname, lname from Owners

これにより、「所有者」テーブルからすべての行が選択されます。

これをまとめると、クエリは、Trainer テーブルに何もない場合 (およびその場合にのみ)、Owner テーブルからすべての行を選択し、存在する場合はまったく何も選択しません。

于 2010-12-16T21:21:48.987 に答える