SQL ServerでAND条件とOR条件を組み合わせる方法
この記事では、SQL Server(Transact-SQL)において、AND条件とOR条件を組み合わせて使用する方法を解説します。
SQL Serverには、AND条件とOR条件それぞれ単独の使い方を説明したチュートリアルがありますが、実際にはこれら2つの条件は、SELECT、INSERT、UPDATE、DELETEといった各コマンドと組み合わせて同時に利用できます。
両条件を組み合わせる際に特に重要なのが、括弧()を使用してデータベースに各条件の評価順序を明示することです。括弧がないと、意図しない順序で条件が処理され、期待した結果が得られないことがあります。
AND条件とOR条件を組み合わせた構文
WHERE '条件1'
AND '条件2'
…
OR '条件n';
変数名と変数値
条件1、条件2 … 条件n
レコードを選択するかどうかを判断するために評価される条件です。
注意点
- AND条件とOR条件を使うことで、複数の条件を1つのクエリ内でチェックできます。
- 括弧によって決まる評価の順序を忘れないようにしましょう。SQL Serverでは、AND演算子はOR演算子よりも先に評価される優先順位を持っています。
具体例
例 – SELECT文
SELECT *
FROM nhanvien
WHERE (ho = 'Anderson' AND ten = 'Sarah')
OR (nhanvien_id = 75);
このクエリは、「姓(ho)が Anderson かつ 名(ten)が Sarah」である従業員、または従業員ID(nhanvien_id)が75のレコードをすべて返します。括弧によって条件の実行順序が明確に決定されています。
SELECT nhanvien_id, ho, ten
FROM nhanvien
WHERE (ho = 'Smith')
OR (ho = 'Anderson' AND ten = 'Sarah')
OR (nhanvien_id > 1000 AND bang = 'California');
この例では、次のいずれかに該当する従業員について、従業員ID・姓・名が返されます。
- 姓が「Smith」である人
- 姓が「Anderson」かつ名が「Sarah」である人
- 従業員IDが1000より大きく、州(bang)が「California」である人
例 – INSERT文
INSERT INTO danhba
(ho, ten)
SELECT ho, ten
FROM nhanvien
WHERE (ho = 'Johnson' OR ho = 'Anderson')
AND nhanvien_id > 54;
この例では、姓が「Johnson」または「Anderson」であり、かつ従業員IDが54より大きい人の姓と名の値がすべて、danhbaテーブルに挿入されます。
例 – UPDATE文
UPDATE nhanvien
SET ho = 'TBD'
WHERE nhanvien_id <= 2000
AND (bang = 'California' OR bang = 'Arizona');
このステートメントでは、従業員IDが2000以下で、かつ州が「California」または「Arizona」である場合に、該当従業員の姓が「TBD」に更新されます。
例 – DELETE文
DELETE FROM nhanvien
WHERE bang = 'California'
AND (ho = 'Johnson' OR ten = 'Joe');
この例のようにDELETE文でもAND条件とOR条件を組み合わせることができ、州の値が「California」で、かつ姓が「Johnson」または名が「Joe」であるレコードがすべて削除されます。
まとめ
SQL ServerでAND条件とOR条件を混在させる場合は、ANDがORより先に評価されることを理解し、括弧を使って評価順序を明確にすることが重要です。これにより、意図通りの結果を安定して得られる、安全で保守性の高いクエリを書くことができます。
-
MS SQL Serverでサービスを開始・停止する方法を徹底解説
MS SQL Serverには、データベースの作成や管理のために、2つの主要なサービスが用意されています。さらに、その他の目的に対応するための追加サービスも複数提供されています。MS SQL Serverの主要なサービスMS SQL Serverの2つの主要なサービスは以下の通りです。SQL ServerSQL Server Agentその他の追加サービスは以下の通りです。SQL Server BrowserSQL Server Full Text SearchSQL Server Integration ServicesSQL Server Reporting ServicesSQL Ser
-
MS SQL Serverとは?特徴・主な用途・バージョン履歴・インスタンスの基インスタンスの基礎を徹底解説
SQL Server(MS SQL Server)とは? SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システム(RDBMS)です。従来のRDBMSの枠組みにとどまらず、オブジェクト指向の概念も取り入れたORDBMS(オブジェクトリレーショナルデータベース管理システム)としての側面も併せ持っています。主な特徴は以下の通りです。 Microsoftが開発したRDBMSベースのデータベースソフトウェアである ORDBMS(オブジェクトリレーショナルデータベース管理システム)としても機能する 特定のプラットフォームに依存しない独立した環境で動作する コマンドライ