0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

mysqlについて

Last updated at Posted at 2021-10-02

記事の概要

  • mysqlのwhere exist構文の作りが理解できなかったため、調査した話。

疑問点

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

というようなsqlを見て構文の構成が不明だったので、色々試していたら、

SELECT column1 FROM t1 WHERE '1';

を実行すると、対象テーブルt1の全レコード取得

SELECT column1 FROM t1 WHERE '0';

を実行すると、0行の実行結果となった。
え?where句って、column=1みたいな記載じゃなくても動くの??

調査結果

mysql公式のwhereステートメント説明を見ると…
where_condition は、選択される各行に対して true に評価される式です。WHERE 句がない場合、このステートメントはすべての行を選択します。
||
つまり
select時に、一行一行に対してwhereの条件が一致するかを計算し、一致する場合trueを返す。
て事
||
ってことは…

SELECT column1 FROM t1 WHERE '1';

にすると、全行がtrueをみなすような形になり、全行返却されるのか!!

納得 :relaxed:

上記理解できたので、where existの作りも理解できた :sunny:

ただ考察も含まれているので、違う可能性もあります。
(先輩たち、間違った事言ってたら教えてください :bow:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?