仅当表不为空时才使用T-SQL连接表

got*_*tqn 4 t-sql join sql-server-2012

我有以下表有一列(RecordID):

TableOne
101
102
103
104
105
106

TableTwo
101
102
103
104
Run Code Online (Sandbox Code Playgroud)

并且只有在TableTwo不为空时才想在它们之间进行连接.这可以使用示例IF语句完成,但在我的实际情况中,这将导致大量代码重复.

我尝试了以下方法:

SELECT * FROM
TableOne T1
WHERE exists (select 1 from TableTwo where T1.RecordID=RecordID)
      and exists (select 1 from TableTwo)
Run Code Online (Sandbox Code Playgroud)

使用这个答案,但同样的逻辑对我不起作用 - 它仅在第二个表不为空时才起作用,如果它是空的,则不返回任何内容.

有谁知道这是否可能?

Tim*_*ter 5

如果没有行,我假设您要选择全部TableTwo.你需要一个ORNOT EXISTS:

SELECT 
   T1.* 
FROM
   TableOne T1
WHERE 
   EXISTS(SELECT 1 from TableTwo WHERE T1.RecordID=RecordID)
   OR NOT EXISTS(SELECT 1 FROM TableTwo)
Run Code Online (Sandbox Code Playgroud)

SQL-小提琴