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