--- title: "WHERE句" url: https://docs.catalyst.zoho.com/ja/cloud-scale/help/zcql/where/ description: "ZCQLは、使い慣れたクエリ言語をモデルにしたCatalyst独自のクエリ言語であり、アプリのデータベースを効率的にクエリするために使用できます。" last_updated: 2026-02-23T12:39:41Z service: Cloud Scale type: general --- # WHERE句 ### はじめに `WHERE`句は、検索クエリで指定された条件または条件のセットに基づいてデータレコードをフィルタリングするために使用されます。WHERE条件がクエリで使用されると、データレコードは指定された条件に基づいて検証され、条件を満たすレコードに対してのみコマンドが実行されます。 たとえば、`SELECT`文で`WHERE`条件を使用する構文は以下のとおりです: ```sql 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`句を使用してクエリに日付条件を指定できます: ```sql 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`条件を使用する構文は以下のとおりです: ```sql 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'の上映日と上映時間のリストを表示するには、以下のクエリを実行します: ```sql 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`条件の構文は以下のとおりです: ```sql UPDATE base_table_name SET column_name(s)=value(s) WHERE condition LIKE *value* ``` '\*'は、指定した値の前後、または前後の両方に使用できます。'\*'は本質的にプレースホルダーであり、その代わりに任意の値が置換可能であることを示します。 たとえば、テーブル内のアルファベット'A'で始まるすべてのレコードを取得する必要があることを指定するには、`LIKE`の値として'A\*'と入力できます。これは、文字Aの後に任意の値が続くことを指定します。 **例:** _Movies_テーブルで映画名が文字'S'で始まるレコードを更新するには、以下のクエリを実行します: ```sql 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`条件の構文は以下のとおりです: ```sql DELETE FROM base_table_name WHERE condition BETWEEN Value1 AND Value2 ``` > **注意:** `BETWEEN`文は、Catalyst Data Storeテーブルの'Int'または'Double'値の選択にのみ使用できます。他のデータ型には使用できません。 **例:** _Movies_テーブルでMovieIDの値が2056から2059の間にあるレコードを削除するには、以下のクエリを実行します: ```sql 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`句でのこの比較サポートは、`SELECT`、`UPDATE`、`DELETE`クエリに適用されます。 以下のデータ型の任意の2つのカラムを比較できます:`BOOLEAN`、`DOUBLE`、`DATE`、`DATETIME`、`ENCRYPTED`、`VARCHAR`、`TEXT`、`INT`、`BIGINT`。 > **注意:** 異なるデータ型の2つのカラムを比較することはできません。 **SELECT:** 同じテーブル内でのカラム比較の一般構文は以下のとおりです: ```sql SELECT * FROM tablename WHERE columnname1 = tablename.columnname2 ``` **例**: ```sql Select MovieName FROM Movies WHERE Actor = Movies.Producer ```
MovieName
The White River Kid
Duplex
Oppenheimer
**UPDATE:** ```sql UPDATE Movies SET self_produced = "Yes" WHERE Actor = Movies.Producer ``` **DELETE:** ```sql DELETE FROM Movies WHERE Actor = Movies.Producer ``` #### 異なるテーブルのカラムの比較 以下の構文に示すように、2つの異なるテーブルのカラムを比較することもできます: ```sql SELECT tablename1.columnname1, tablename2.columnname1 FROM tablename2 LEFT JOIN tablename1 ON tablename2.columnname1 = tablename1.columnname2 WHERE tablename1.columnname1 = tablename2.columnname2 ``` **例**: ```sql 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`句を使用したサブクエリの構文は以下のとおりです: ```sql SELECT column_name FROM table_name WHERE column_name operator (SELECT column_name FROM table_name) ``` **サンプルデータベース** Zylker Technologiesの従業員詳細は、[Data Store](https://docs.catalyst.zoho.com/ja/cloud-scale/help/data-store/introduction/)の*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
最低給与の従業員よりも高い給与を受け取る従業員の給与と名前をリストするサブクエリ文の例を以下に示します: ```sql 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](https://docs.catalyst.zoho.com/ja/getting-started/catalyst-organizations/)の[開発環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/development-environment/)にある現在のすべてのプロジェクトは、自動的に**ZCQL V2 Parser**にマッピングされます。 * **2025年4月1日**より、*開発環境*で**ZCQL V2 Parser**にすでにマッピングされているすべての*Org*のすべてのプロジェクトは、プロジェクトの本番環境が有効化された場合、[本番環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/production-environment/)で自動的に**ZCQL V2 Parser**にマッピングされます。