English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite WHERE 子句

SQLite WHERE子句は、一つのテーブルまたは複数のテーブルからデータを取得する際の条件を指定するために使用されます。

指定された条件を満たす場合、trueと評価され、特定の値がテーブルから返されます。必要なレコードのみを抽出するためにWHERE子句を使用する必要があります。

WHERE子句はSELECT文だけでなく、UPDATE、DELETE文などでも使用されます。これは後の章で説明します。

構文

以下はWHERE子句を含むSQLite SELECT文の基本的な構文です。

SELECT column1, column2, columnN FROM table_name WHERE [condition]

オンラインサンプル

あなたは以下を使用できます。比較演算子または論理演算子(例えば>、<、=、LIKE、NOTなどで条件を指定します。以下のRECORDSテーブルを持つCOMPANYテーブルを参照してください。-

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

以下はSQLiteの論理演算子の使用法を示す簡単な例です。以下のSELECT文句はAGE(年齢)がまたは以上のものをリストアップします。25 およびSALARY(給料)がまたは以上のものをリストアップします。65000.00のすべてのレコードです。

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

以下SELECT文句はAGE(年齢)がまたは以上のものをリストアップします。25 または SALARY(給料)が大きいまたは等しい65000.00のすべてのレコードです。

sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

SELECT文の後で、AGE(年齢)がNULLでないすべてのレコードがリストアップされます。これは、AGEの値がNULLであるレコードがないため、すべてのレコードが表示されることを意味します。

sqlite> * FROM COMPANY WHERE AGE IS NOT NULL;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

以下のSELECT文では、NAMEが'Ki'で始まるすべてのレコードがリストアップされますが、'Ki'の後の任意のレコードとは関係ありません。

sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

以下のSELECT文では、NAMEが'Ki'で始まるすべてのレコードがリストアップされますが、'Ki'の後のレコードとは関係ありません。

sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

SELECT文の後で、AGE(年齢)の値が25または27のすべてのレコードです。

sqlite> SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

以下のSELECT文では、AGE(年齢)の値が25でもありません27のすべてのレコードです。

sqlite> SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

SELECT文の後で、AGE(年齢)の値が25および27のすべてのレコードです。

sqlite> SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

以下のSELECT文ではSQLサブクエリを使用し、サブクエリがAGE(年齢)フィールドのSALARYを参照しています。 65000のすべてのレコードがリストアップされ、その後WHERE子句とEXISTS演算子が一緒に使用され、外部クエリが存在するAGEのすべてのレコードがサブクエリの返却結果にリストアップされます。-

sqlite> SELECT AGE FROM COMPANY 
   WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
AGE
----------
32
25
23
25
27
22
24

以下のSELECT文ではSQLサブクエリを使用し、サブクエリがAGEフィールドのSALARYを参照しています。 65000のすべてのレコード、および>演算子と一緒に使用されるWHERE子句が外部クエリのAGEがサブクエリの返却結果のAGEよりも大きいすべてのレコードをリストアップします。

sqlite> SELECT * FROM COMPANY 
   WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0