1

結合を使用して両方のテーブルから値を選択する 2 つのテーブルがあるtest1とします。test2

私の要件は次のとおりです。2 つのテーブルを結合するときに、test1データが含まれているが対応するデータが に見つからないtest2場合、クエリは例外をスローする必要があります。

これはどのように達成できますか?

4

1 に答える 1

1

RAISEERRORが必要です

左結合を行い、右側がヌルの場所を選択します。カウント > 0 の場合、例外をスローします。

DECLARE @count INT

SELECT 
   @count = COUNT(*)
FROM
  test1 t1
LEFT JOIN test2 t2 
  ON t1.t1_join_col = t2.t2_join_col
WHERE 
  t2.t2_join_col IS NULL -- find where we have test1 data but not test2 data

-- Check if I need to raise an error
IF @count <> 0 
    RAISERROR (N'<<%7.3s>>', -- Message text.
           10, -- Severity,
           1, -- State,
           N'abcde'); -- First argument supplies the string.
    -- The message text returned is: <<    abc>>.

一致しない結果を返す必要がある場合は、次の ELSE を追加します

ELSE

SELECT 
  ... cols you want
FROM
  test1 t1
LEFT JOIN test2 t2 
  ON t1.t1_join_col = t2.t2_join_col

クエリを 1 回だけ実行したい場合は、常に結果を一時テーブルに入れてそれをカウントし、それを返すこともできます。

于 2012-11-06T03:51:48.550 に答える