笛卡尔连接两个没有记录的表

时间:2012-11-26 20:09:27

标签: sql sql-server

我必须将表A(与税务相关)加入表B(与客户相关)

我最多拉1条记录,但有时没记录。

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

我虽然做一个简单的笛卡尔产品会有工作

SELECT * FROM TableA, TableB

但如果TableA或TableB为空则无效

我会做一个完整的外部联接,但现在没有任何东西可以加入。我可以使用标识列创建临时表,然后加入它们(因为1 = 1)

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

谢谢

1 个答案:

答案 0 :(得分:6)

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

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

要始终返回至少一行,即使TableATableB是emtpy,您也可以使用假表:

select  *
from    (
        select  1 as col1
        ) fake
left join
        TableA a
on      1=1
left join
        TableB b
on      1=1