1. ホーム
  2. mysql

[解決済み] select 1 from tableとはどういう意味ですか?

2022-03-06 17:59:07

質問

以下のようなクエリをよく見かけます。

Select 1  
From table

この 1 どのように実行され、何を返すのでしょうか?

また、どのような場面で使えるのでしょうか?

どのように解決するのですか?

SELECT 1 FROM TABLE_NAME とは、「テーブルから1を返す」という意味です。これだけではあまり目立たないので、通常は WHERE で、多くの場合 EXISTS (@gbn が指摘するように、これは必ずしもベストプラクティスではありませんが、しかし、たとえ本当に意味がなくても、注意するのに十分なほど一般的です (とはいえ、他の人が使っていて、すぐに "もっと明白" になるので私はこれを使うことにします)。もちろん、それは粘着性のある鶏と卵の問題かもしれませんが、私は一般的にくよくよしません))。

 SELECT * FROM TABLE1 T1 WHERE EXISTS (
     SELECT 1 FROM TABLE2 T2 WHERE T1.ID= T2.ID
 );

基本的に、上記はテーブル1から、テーブル2のIDに対応するものをすべて返す。(これは明らかに作為的な例ですが、考え方は伝わると思います。個人的には、上記を次のようにします。 SELECT * FROM TABLE1 T1 WHERE ID IN (SELECT ID FROM TABLE2); と同じように考えています。 ファー 状況的にやむを得ない理由がない限り、読者にとってより明確なものとなります)。

EDIT

実は、今まで忘れていたのですが、1つだけケースがあります。データベース内の値の存在を外部の言語から判断しようとする場合、たまに SELECT 1 FROM TABLE_NAME が使われます。これは個々のカラムを選択することに比べて大きな利点はありませんが、実装によっては SELECT * なぜなら、DBが言語に返す列の数が多ければ多いほど、データ構造が大きくなり、その分時間がかかってしまうからです。