【SQL】複数の条件を指定してSELECTする
SQL Serverでデータを取得するには「SELECT」を使います。
SELECTはWHERE句で複数の条件を指定して様々なデータ検索(取得)ができます。
今回は複数の条件を指定してSELECTするパターンを紹介します。
SELECT
--テーブルのデータを取得する SELECT {列} FROM {テーブル} WHERE {条件} ;
サンプルデータ
empテーブル
empno | empname | address | gen_f | pos_f |
D001 | 佐藤花子 | 東京都渋谷区1-1-1 | 1 | 1 |
D002 | 山田太郎 | 北海道札幌市1-2-15 | 0 | 1 |
D003 | 中村玉子 | 埼玉県さいたま市1-1-1000 | 1 | 0 |
D004 | 伊藤学 | 東京都渋谷区100-1-1 | 0 | 1 |
例1. 複数の条件を指定するSELECT(AND)
--テーブルの値を取得する SELECT * FROM emp WHERE gen_f = 1 AND pos_f = 1 ;
empno | empname | address | gen_f | pos_f |
D001 | 佐藤花子 | 東京都渋谷区1-1-1 | 1 | 1 |
列を複数指定する場合はWHERE句で「AND」でつなげます。
ここでは「gen_f = 1」「pos_f = 1」という2つの条件をSQLで指定し、この2つの条件を満たすレコードをSELECTしました。
例2. 複数の条件を指定するSELECT(OR)
--テーブルの値を取得する SELECT * FROM emp WHERE gen_f = 1 OR pos_f = 1 ;
empno | empname | address | gen_f | pos_f |
D001 | 佐藤花子 | 東京都渋谷区1-1-1 | 1 | 1 |
D002 | 山田太郎 | 北海道札幌市1-2-15 | 0 | 1 |
D003 | 中村玉子 | 埼玉県さいたま市1-1-1000 | 1 | 0 |
D004 | 伊藤学 | 東京都渋谷区100-1-1 | 0 | 1 |
ここでは「AND」ではなく「OR」を使いました。「A OR B」は、「AもしくはB」という条件になります。
「gen_f = 1」かもしくは「pos_f = 1」という条件を指定し、これを満たすレコードをSELECTしました。
例3. 複数の条件を指定するSELECT(AND OR混在)
--テーブルの値を取得する SELECT * FROM emp WHERE empno < 'D003' AND (gen_f = 1 OR pos_f = 1) ;
empno | empname | address | gen_f | pos_f |
D001 | 佐藤花子 | 東京都渋谷区1-1-1 | 1 | 1 |
D002 | 山田太郎 | 北海道札幌市1-2-15 | 0 | 1 |
ここでは「AND」と「OR」を混在してSELECTしました。
「empno < ‘D003’」でかつ「gen_f = 1か pos_f = 1」という条件になります。「OR」を効かせたい条件は必ずカッコ()で括る必要があります。
ORの注意点
「OR」は注意が必要です。「OR」がある時点でSQLが分断されてしまいます。
なので「OR」を効かせたい条件は必ずカッコ()で括る必要があります。
例えば、カッコで括らなかったとしたら?その場合のSQLと結果を見てみます。
--テーブルの値を取得する SELECT * FROM emp WHERE empno < 'D003' AND gen_f = 1 OR pos_f = 1 ;
empno | empname | address | gen_f | pos_f |
D001 | 佐藤花子 | 東京都渋谷区1-1-1 | 1 | 1 |
D002 | 山田太郎 | 北海道札幌市1-2-15 | 0 | 1 |
D004 | 伊藤学 | 東京都渋谷区100-1-1 | 0 | 1 |
「OR」をカッコで括っていないため、条件「empno < ‘D003’」が無視され、「empno=D004」がSELECTされてしまいました。
これは「empno < ‘D003’ かつ gen_f = 1」 もしくは 「pos_f = 1」という条件になります。
よって「pos_f = 1」である「empno=D004」がSELECTされてしまったのです。
このように、「OR」を効かせたい条件は必ずカッコ()で括る必要があるので忘れないように注意が必要ですね。
SQLで複数の条件を指定してSELECTするパターンとして3つとりあげました。
以上、SQL Serverで複数の条件を指定してSELECTするパターンでした。
コメント