WHERE句
はじめに
WHERE句は、検索クエリで指定された条件または条件のセットに基づいてデータレコードをフィルタリングするために使用されます。WHERE条件がクエリで使用されると、データレコードは指定された条件に基づいて検証され、条件を満たすレコードに対してのみコマンドが実行されます。
たとえば、SELECT文でWHERE条件を使用する構文は以下のとおりです:
SELECT column_name(s) FROM base_table_name WHERE condition
WHERE条件は、UPDATE文やDELETE文でも使用できます。
WHERE句でサポートされる演算子
ZCQLクエリのWHERE条件で以下の演算子を使用できます:
| 演算子 | 説明 |
|---|---|
| = | 等しい |
| IS | オペランドが値と同じ場合にTRUE |
| IS NULL | オペランドがnull値の場合にTRUE |
| IS NOT NULL | オペランドがnull値でない場合にTRUE |
| != | 等しくない |
| LIKE | オペランドがパターンに一致する場合にTRUE |
| NOT LIKE | オペランドがパターンに一致しない場合にTRUE |
| BETWEEN | オペランドの値が開始値と終了値の間にある場合にTRUE |
| IN | オペランドが式のリストのいずれかと等しい場合にTRUE |
| NOT IN | オペランドが式のリストのいずれとも等しくない場合にTRUE |
| > | より大きい |
| >= | 以上 |
| < | より小さい |
| <= | 以下 |
例:
Moviesテーブルから2018年7月13日以外の日に上映される映画のリストを表示するには、以下のようにWHERE句を使用してクエリに日付条件を指定できます:
SELECT MovieName, ShowDate FROM Movies WHERE ShowDate IS '2018-07-14'
以下の出力が生成されます:
| MovieName | ShowDate |
|---|---|
| Hotel Transylvania 3: Summer Vacation | 2018-07-14 |
| Skyscraper | 2018-07-14 |
複数のWHERE条件
1つのクエリで最大5つのWHERE条件を指定できます。複数のWHERE条件を指定する場合、ANDまたはOR演算子を使用して条件を結合できます。ANDとOR演算子の機能は以下のとおりです:
-
AND: AND演算子に関連付けられた両方の条件を満たすデータレコードのみを生成します。
-
OR: OR演算子に関連付けられた条件のいずれかを満たすデータレコードを生成します。
たとえば、SELECT文で複数のWHERE条件を使用する構文は以下のとおりです:
SELECT column_name(s)
FROM base_table_name
WHERE condition_1 AND|OR condition_2.. AND|OR condition_5
例:
_Movies_テーブルから7月14日に上映される’The First Purge’または’Skyscraper’の上映日と上映時間のリストを表示するには、以下のクエリを実行します:
SELECT MovieName, ShowDate, ShowTime FROM Movies WHERE MovieName='The First Purge' OR MovieName='Skyscraper' AND ShowDate='2018-07-14'
上記の条件に一致するレコードは1つだけです。したがって、クエリは以下の結果を生成します:
| MovieName | ShowDate | ShowTime |
|---|---|---|
| Skyscraper | 2018-07-14 | 21:30:00 |
LIKE文
LIKE条件を使用すると、特定の条件を含むレコードを指定し、その条件に一致するすべてのレコードを選択できます。たとえば、取得するレコードが特定のアルファベットで始まる必要がある、または特定の値を含む必要があるように指定できます。
たとえば、UPDATE文でのLIKE条件の構文は以下のとおりです:
UPDATE base_table_name
SET column_name(s)=value(s)
WHERE condition
LIKE *value*
‘*‘は、指定した値の前後、または前後の両方に使用できます。’*‘は本質的にプレースホルダーであり、その代わりに任意の値が置換可能であることを示します。
たとえば、テーブル内のアルファベット’A’で始まるすべてのレコードを取得する必要があることを指定するには、LIKEの値として’A*‘と入力できます。これは、文字Aの後に任意の値が続くことを指定します。
例:
_Movies_テーブルで映画名が文字’S’で始まるレコードを更新するには、以下のクエリを実行します:
UPDATE Movies SET ShowDate='2018-07-17' WHERE MovieName like 'S*'
以下のレコードが更新され、値が設定されます:
| MovieID | MovieName | ShowDate | ShowTime | TheaterID |
|---|---|---|---|---|
| 2059 | Skyscraper | 2018-07-17 | 21:30:00 | 053 |
LIKE条件文で定義されたZCQL文では、ワイルドカード構文と*や?などの記号も使用できます。
| ワイルドカード構文 | 定義 |
|---|---|
| * | 0個以上の文字に一致 |
| ? | 正確に1文字に一致 |
BETWEEN文
BETWEEN条件を使用すると、数値を含む特定のカラムの開始値と終了値を指定してレコードをフィルタリングできます。たとえば、パーセンテージ値が70から80の間にあるすべてのレコードを選択できます。
たとえば、DELETE文でのBETWEEN条件の構文は以下のとおりです:
DELETE FROM base_table_name
WHERE condition
BETWEEN Value1 AND Value2
例:
_Movies_テーブルでMovieIDの値が2056から2059の間にあるレコードを削除するには、以下のクエリを実行します:
DELETE FROM Movies WHERE MovieID BETWEEN 2056 AND 2059
テーブルから以下のレコードが削除されます:
| MovieID | MovieName | ShowDate | ShowTime | TheaterID |
|---|---|---|---|---|
| 2057 | Ant-Man and the Wasp | 2018-07-13 | 14:20:00 | 052 |
| 2058 | Hotel Transylvania 3: Summer Vacation | 2018-07-14 | 17:00:00 | 052 |
カラム対カラムの比較
同じテーブルまたは異なるテーブルの2つのカラムを、比較の左辺と右辺でカラム名をそれぞれのテーブル名で参照して比較できます。比較の結果は、テーブル内のcolumn1とcolumn2に同じ値を含む行を返します。
WHERE句でのこの比較サポートは、SELECT、UPDATE、DELETEクエリに適用されます。
以下のデータ型の任意の2つのカラムを比較できます:BOOLEAN、DOUBLE、DATE、DATETIME、ENCRYPTED、VARCHAR、TEXT、INT、BIGINT。
SELECT:
同じテーブル内でのカラム比較の一般構文は以下のとおりです:
SELECT * FROM tablename WHERE columnname1 = tablename.columnname2
例:
Select MovieName FROM Movies WHERE Actor = Movies.Producer
| MovieName |
|---|
| The White River Kid |
| Duplex |
| Oppenheimer |
UPDATE:
UPDATE Movies SET self_produced = "Yes" WHERE Actor = Movies.Producer
DELETE:
DELETE FROM Movies WHERE Actor = Movies.Producer
異なるテーブルのカラムの比較
以下の構文に示すように、2つの異なるテーブルのカラムを比較することもできます:
SELECT tablename1.columnname1, tablename2.columnname1
FROM tablename2 LEFT JOIN tablename1 ON tablename2.columnname1 = tablename1.columnname2
WHERE tablename1.columnname1 = tablename2.columnname2
例:
SELECT Movies.name, Theatres.city from Theatres left join Movies on Theatres.ROWID = Movies.theatreID where Movies.distributionCity = theatre.city
| Name | CIty |
|---|---|
| Dark Knight Rises | Los Angeles |
| Titanic | New York |
同様に、UPDATEおよびDELETEクエリの実行時に、2つの異なるテーブルに属するカラムを比較できます。
WHERE句でのサブクエリ
サブクエリは、別のクエリ文の中に記述されるクエリです。Catalystでは、WHERE句を使用した単純な単一サブクエリを実行できます。SELECT、UPDATE、DELETEクエリでWHERE句を使用したサブクエリを記述できます。
WHERE句を使用したサブクエリの構文は以下のとおりです:
SELECT column_name FROM table_name WHERE column_name operator (SELECT column_name FROM table_name)
サンプルデータベース
Zylker Technologiesの従業員詳細は、Data StoreのZylker_Employee_DBテーブルで管理されています。テーブルには以下のカラムと行が含まれています:
| ID | Name | Department | Salary |
|---|---|---|---|
| ZT-001 | Amelia Burrows | Product Management | 15000 |
| ZT-2001 | Bruce Wayne | Sr. Management | 85000 |
| ZT-239 | Clark Kane | Media Relations | 85000 |
| ZT-4289 | Michelle Mascarenhas | Finance | 89000 |
最低給与の従業員よりも高い給与を受け取る従業員の給与と名前をリストするサブクエリ文の例を以下に示します:
SELECT Name, Salary FROM Zylker_Employee_DB WHERE Salary > (SELECT MIN (Salary) FROM Zylker_Employee_DB)
| Zylker_Employee_DB.Salary | Zylker_Employee_DB.Name |
|---|---|
| 15000 | Amelia Burrows |
| 85000 | Bruce Wayne |
| 89000 | Michelle Mascarenhas |
最終更新日 2026-02-23 18:09:41 +0530 IST
Yes
No
Send your feedback to us