4

我有以下表格,其中包含一列(RecordID):

TableOne
101
102
103
104
105
106

TableTwo
101
102
103
104

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

我尝试了以下方法:

SELECT * FROM
TableOne T1
WHERE exists (select 1 from TableTwo where T1.RecordID=RecordID)
      and exists (select 1 from TableTwo)

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

有谁知道这是否可能?

4

1 回答 1

6

我假设你想全选,如果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)

SQL小提琴

于 2013-01-07T11:39:04.817 回答