いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)QUERY関数のSELECT句は必須ではない

 Googleスプレッドシート独自の関数であるQUERY関数におけるSELECT句の使用についてです。

  • SELECT句を省略すれば全ての列が抽出されます。
  • WHERE句などを使用する際にSELECT句を併用する必要はありません。

手順

 F2セルにQUERY関数を用いた式を入力し、B2:D7の範囲にある表をそのまま抽出しています。

 F2セル

=QUERY(B2:D7,"SELECT *",1)

 第2引数として「"SELECT *"」を指定しています。QUERY関数の第2引数で使用できる「クエリ言語」のモデルであるSQLではおなじみの表現で、すべての列を抽出することを意味しています。もちろんクエリ言語においても同じ意味(第1引数で指定した範囲のすべての行を抽出する)となります。


 しかし、そもそもQUERY関数の第2引数自体が省略可能で、その場合すべての列、すべての行を抽出します。
 「"SELECT *"」を使用するまでもありません。

 F2セル

=QUERY(B2:D7,,1)


 よってSELECT句を使用するのは、抽出しようとする列を制限する場合だけで十分です。
 この例は第1引数で指定した範囲(B~D列)のうち、B列とC列だけを抽出しています。

 F2セル

=QUERY(B2:D7,"SELECT B,C",1)


 WHERE句を使って抽出する行の絞り込みができますが、このときもSELECT句は必須ではありません。

 F2セル

=QUERY(B2:D7,"WHERE B>=2",1)

 SQLの場合はSELECT文がないと抽出そのものができず、WHEREなどはそのオプションという扱いです。
 しかしQUERY関数の場合はQUERY関数だけで抽出ができ、クエリ言語の句はすべてオプションです。一部の列だけ抽出したければSELECTを使い、一部の行を抽出したければWHEREなどを使えばよいのです。