如果表2有记录,请从表1中选择匹配记录,否则从表1中选择全部

时间:2013-06-19 15:08:26

标签: sql-server

情况:

  • 我有两张桌子
  • 表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语句。

这甚至可能吗?

1 个答案:

答案 0 :(得分: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
        )