副問い合わせ Table "public.zoob" Table "public.animal"

testdb=# \d zoob
                Table "public.zoob"
 Column |  Type   | Collation | Nullable | Default 
--------+---------+-----------+----------+---------
 name   | text    |           |          | 
 num    | integer |           |          | 
testdb=# SELECT * FROM zoob;
   name   | num 
----------+-----
 サル     |  22
 コアラ   |   2
 キリン   |   3
 ライオン |   2
(4 rows)
testdb=# \d animal
             Table "public.animal"
 Column | Type | Collation | Nullable | Default 
--------+------+-----------+----------+---------
 name   | text |           |          | 
testdb=# SELECT * FROM animal;
   name   
----------
 コアラ
 キリン
 ライオン
 チーター
 イノシシ
 サル
(6 rows)
testdb=# SELECT * FROM animal WHERE EXISTS (SELECT * FROM zoob WHERE num = 5);
 name 
------
(0 rows)

EXISTS演算子は「副問い合わせの結果が存在するかどうか」を判定します。
上記から、副問い合わせには対象テーブル「animal」に関する条件が指定されて言い無いことが分かります。副問い合わせで取得されるデータは0件であり、判定は偽となることからデータは取得されません。

この記事が気に入ったらサポートをしてみませんか?