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

Tsql 仅当表不为空时才使用T-SQL联接表,tsql,join,sql-server-2012,Tsql,Join,Sql Server 2012,我有一列(RecordID)的下表: 并且只想在TableTwo不为空时在它们之间建立连接。这可以通过示例IF语句完成,但在我的实际情况中,这将导致大量代码重复 我尝试了以下方法: SELECT * FROM TableOne T1 WHERE exists (select 1 from TableTwo where T1.RecordID=RecordID) and exists (select 1 from TableTwo) 使用这个,但同样的逻辑对我不起作用-它只在第二个表

我有一列(RecordID)的下表:

并且只想在TableTwo不为空时在它们之间建立连接。这可以通过示例IF语句完成,但在我的实际情况中,这将导致大量代码重复

我尝试了以下方法:

SELECT * FROM
TableOne T1
WHERE exists (select 1 from TableTwo where T1.RecordID=RecordID)
      and exists (select 1 from TableTwo)
使用这个,但同样的逻辑对我不起作用-它只在第二个表不为空时起作用,如果为空,则不返回任何内容


有人知道这是否可行吗?

如果
表2中没有行,我想您应该选择all。您需要
,并且
不存在

SELECT 
   T1.* 
FROM
   TableOne T1
WHERE 
   EXISTS(SELECT 1 from TableTwo WHERE T1.RecordID=RecordID)
   OR NOT EXISTS(SELECT 1 FROM TableTwo)

能否提供估计结果集?
SELECT 
   T1.* 
FROM
   TableOne T1
WHERE 
   EXISTS(SELECT 1 from TableTwo WHERE T1.RecordID=RecordID)
   OR NOT EXISTS(SELECT 1 FROM TableTwo)