0

情况:

  • 我有两张桌子
  • 表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 回答