【SQL Server】SELECT文の結果によって、処理内容を分岐させる【EXISTS】

SQL Serverで
 ・SELECT文の結果によって
 ・処理内容を分岐
できます!

例えば
 ・SELECT結果が0レコードでない場合はUPDATE文を実行
 ・SELECT結果が0レコードの場合はINSERT文を実行
といったことができます!

IF EXISTSによって実現できます!
※「IF」と「EXISTS」を組み合わせにより実現できます。

PR

IF EXISTSの構文

IF EXISTSの構文

IF EXISTS (SELECT文)
 BEGIN
  0レコードでない場合に実行する処理
 END
ELSE
 BEGIN
  0レコードの場合に実行する処理
END

PR

IF EXISTSの使用例

ここでは例として
 ・「employee」テーブルに対して
 ・SELECT結果が0レコードでない場合はUPDATE文を実行
 ・SELECT結果が0レコードの場合はINSERT文を実行
します。

IF EXISTS (SELECT * FROM employee WHERE id = '00001')
	BEGIN
		--0レコードでない場合はUPDATE文を実行
		UPDATE employee SET section = 'システム課' WHERE id = '00001'
	END
ELSE
	BEGIN
		--0レコードの場合はINSERT文を実行
		INSERT INTO employee VALUES('00001','鈴木','男','営業課')
	END
上記のコード
上記のコード


上記を
 ・SELECT文の結果が0レコードの時に実行すると
 ・INSERT文が実行
されました。

SELECT文の結果が0レコードの時に実行すると…
SELECT文の結果が0レコードの時に実行すると…
INSERT文が実行された。
INSERT文が実行された。


また
 ・SELECT文の結果が0レコードでない時に実行すると
 ・UPDATE文が実行
されました。

UPDATE文が実行された。
UPDATE文が実行された。
PR

参考①

単純にIF文で処理内容を分岐させることもできます。

詳細は以下の記事をご確認ください。

PR

参考②

上記に記載した以下の詳細について、公式サイトをご確認ください。

●SQL ServerのIF文


●[BEGIN – END]について


●EXISTS

タイトルとURLをコピーしました