在没有记录的情况下进行笛卡尔积连接两个表

5

我需要将表A(与税收相关)与表B(与客户相关)连接起来

我最多只能获取1条记录,但有时没有记录。

现在我需要将组合记录返回给用户

我认为进行简单的笛卡尔积应该可以解决问题。

SELECT * FROM TableA, TableB

但是如果TableA或TableB为空,则这种方法不起作用。

我会做一个完全外部连接,但现在没有任何可以连接的东西。 我可以创建带有标识列的临时表,然后在它们上面进行连接(因为1 = 1)

但我正在寻找另一种方法?

谢谢

1个回答

6

根据您的建议,您可以使用 full outer join 来保证一行数据:

select  *
        TableA a
full outer join
        TableB b
on      1=1

为了始终返回至少一行,即使TableATableB为空,您可以使用一个虚拟表格:
select  *
from    (
        select  1 as col1
        ) fake
left join
        TableA a
on      1=1
left join
        TableB b
on      1=1

谢谢你指引我正确的方向,但是我使用了 FROM #TaxPiece TaxPiece full outer join #TaxAddress TaxAddress on 1=1。非常感谢。 - Mike
顺便说一下,我在将此标记为正确答案方面有些犹豫。虽然它帮助我找到了答案,但我不想将其标记为正确答案。我也不想回答自己的问题,因为这个问题已经接近解决了。您是否考虑更新您的答案,不使用虚拟表。 - Mike
我会更新答案。请注意,如果A和B都为空,则此变体返回一个空集。 - Andomar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接