0

状況:

  • 私は2つのテーブルを持っています
  • テーブル 1 には常にレコードがあります
  • 表 2 は select ステートメントの結果であり、レコードがある場合とない場合があります。

望ましい結果:

テーブル 2 に任意のレコードがある場合、テーブル 1 の一致するレコードのみが必要です。それ以外の場合は、テーブル 1 のすべてのレコードが必要です。

私はこれを行うことができることに気づきました:

DECLARE @count int
SELECT @count=COUNT(*) FROM Table2

IF @count>0
SELECT t1.* FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id=t2.id
ELSE
SELECT * FROM Table1

IFただし、可能であれば、ステートメントを避けようとしています。

それは可能ですか?

4

1 に答える 1

2
select  t1.*
from    Table1 t1
left join
        Table2 t2
on      t1.id = t2.id
where   t2.id is not null -- Match found
        or not exists -- Or Table2 is empty
        (
        select  *
        from    Table2
        )
于 2013-06-19T15:12:21.990 に答える