お知らせ:

当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

WHERE句

はじめに

WHERE句は、検索クエリで指定された条件または条件のセットに基づいてデータレコードをフィルタリングするために使用されます。WHERE条件がクエリで使用されると、データレコードは指定された条件に基づいて検証され、条件を満たすレコードに対してのみコマンドが実行されます。

たとえば、SELECT文でWHERE条件を使用する構文は以下のとおりです:

copy
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句を使用してクエリに日付条件を指定できます:

copy
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演算子を使用して条件を結合できます。ANDOR演算子の機能は以下のとおりです:

  • AND: AND演算子に関連付けられた両方の条件を満たすデータレコードのみを生成します。

  • OR: OR演算子に関連付けられた条件のいずれかを満たすデータレコードを生成します。

たとえば、SELECT文で複数のWHERE条件を使用する構文は以下のとおりです:

copy
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’の上映日と上映時間のリストを表示するには、以下のクエリを実行します:

copy
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条件の構文は以下のとおりです:

copy
UPDATE base_table_name
SET column_name(s)=value(s)
WHERE condition
LIKE *value* 

‘*‘は、指定した値の前後、または前後の両方に使用できます。’*‘は本質的にプレースホルダーであり、その代わりに任意の値が置換可能であることを示します。

たとえば、テーブル内のアルファベット’A’で始まるすべてのレコードを取得する必要があることを指定するには、LIKEの値として’A*‘と入力できます。これは、文字Aの後に任意の値が続くことを指定します。

例:

_Movies_テーブルで映画名が文字’S’で始まるレコードを更新するには、以下のクエリを実行します:

copy
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条件の構文は以下のとおりです:

copy
DELETE FROM base_table_name
WHERE condition
BETWEEN Value1 AND Value2

注意: BETWEEN文は、Catalyst Data Storeテーブルの'Int'または'Double'値の選択にのみ使用できます。他のデータ型には使用できません。

例:

_Movies_テーブルでMovieIDの値が2056から2059の間にあるレコードを削除するには、以下のクエリを実行します:

copy
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
注意: 正反対の結果を生成するには、NOT BETWEEN文を使用できます。BETWEEN文と同じ構文と条件がNOT BETWEEN文にも適用されます。

カラム対カラムの比較

同じテーブルまたは異なるテーブルの2つのカラムを、比較の左辺と右辺でカラム名をそれぞれのテーブル名で参照して比較できます。比較の結果は、テーブル内のcolumn1とcolumn2に同じ値を含む行を返します。

WHERE句でのこの比較サポートは、SELECTUPDATEDELETEクエリに適用されます。

以下のデータ型の任意の2つのカラムを比較できます:BOOLEANDOUBLEDATEDATETIMEENCRYPTEDVARCHARTEXTINTBIGINT

注意: 異なるデータ型の2つのカラムを比較することはできません。

SELECT:

同じテーブル内でのカラム比較の一般構文は以下のとおりです:

copy
SELECT * FROM tablename WHERE columnname1 = tablename.columnname2

:

copy
Select MovieName FROM Movies WHERE Actor = Movies.Producer
MovieName
The White River Kid
Duplex
Oppenheimer

UPDATE:

copy
UPDATE Movies SET self_produced = "Yes" WHERE Actor = Movies.Producer

DELETE:

copy
DELETE FROM Movies WHERE Actor = Movies.Producer

異なるテーブルのカラムの比較

以下の構文に示すように、2つの異なるテーブルのカラムを比較することもできます:

copy
SELECT tablename1.columnname1, tablename2.columnname1 
FROM tablename2 LEFT JOIN tablename1 ON tablename2.columnname1 = tablename1.columnname2 
WHERE tablename1.columnname1 = tablename2.columnname2

:

copy
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句を使用した単純な単一サブクエリを実行できます。SELECTUPDATEDELETEクエリでWHERE句を使用したサブクエリを記述できます。

WHERE句を使用したサブクエリの構文は以下のとおりです:

copy
SELECT column_name FROM table_name WHERE column_name operator (SELECT column_name FROM table_name)

サンプルデータベース

Zylker Technologiesの従業員詳細は、Data StoreZylker_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

最低給与の従業員よりも高い給与を受け取る従業員の給与と名前をリストするサブクエリ文の例を以下に示します:

copy
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
注意:
  • この機能はZCQL V2でのみ利用可能です。

  • 2024年12月1日より、すべてのOrg開発環境にある現在のすべてのプロジェクトは、自動的にZCQL V2 Parserにマッピングされます。

  • 2025年4月1日より、開発環境ZCQL V2 ParserにすでにマッピングされているすべてのOrgのすべてのプロジェクトは、プロジェクトの本番環境が有効化された場合、本番環境で自動的にZCQL V2 Parserにマッピングされます。


最終更新日 2026-02-23 18:09:41 +0530 IST