You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两张表的Cross Join并包含Null行

实现带Null行的全交叉连接需求

没问题,要实现你说的「每个表1元素和表2所有元素组合,再额外加一行表2为Null的行」,其实只需要稍微扩展一下表2的数据源,或者用联合查询补全Null行就行,我给你两种常见的SQL实现方式:

方法1:扩展表2数据集后做交叉连接

这种方法更高效,我们先把表2的数据加上一行Null值,再和表1做Cross Join,这样一次性就能得到所有需要的组合:

-- 假设你的表1叫table1(列名col1),表2叫table2(列名col2)
SELECT t1.col1, t2.col2
FROM table1 t1
CROSS JOIN (
    -- 原表2的数据 + 一行Null值
    SELECT col2 FROM table2
    UNION ALL
    SELECT NULL AS col2
) t2
-- 排序让结果和你期望的一致
ORDER BY t1.col1, t2.col2;

方法2:普通交叉连接 + 联合Null行

如果觉得子查询不太好理解,也可以分开处理:先做普通的Cross Join得到所有正常组合,再用UNION ALL把每个表1元素对应Null的行补进去:

-- 第一步:获取表1和表2的所有正常组合
SELECT col1, col2 FROM table1 CROSS JOIN table2
UNION ALL
-- 第二步:补全每个表1元素对应的Null行
SELECT col1, NULL FROM table1
-- 排序对齐结果
ORDER BY col1, col2;

验证结果

执行上面任意一段SQL后,都会得到你期望的结果:

col1col2
A1
A2
A3
Anull
B1
B2
B3
Bnull
C1
C2
C3
Cnull

内容的提问来源于stack exchange,提问作者pokka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:27:45