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

如何在无PK/FK关联的两张表间实现一对多连接?

实现两张无关联表的全量组合(笛卡尔积)

嘿,你这个需求其实就是要生成两张表的笛卡尔积(Cartesian Product)——也就是让表1里的每一条记录,都和表2里的所有记录进行匹配组合,这在SQL里是个很基础的操作,两种写法都能实现:

方法1:隐式交叉连接(用逗号分隔表)

这种写法比较简洁,直接在FROM子句里列出两个表即可,数据库会自动处理成全量组合:

SELECT table1.A, table2.B
FROM table1, table2;

方法2:显式交叉连接(CROSS JOIN)

这种写法更清晰直观,明确告诉数据库要做全量匹配,可读性更好,推荐使用:

SELECT t1.A, t2.B
FROM table1 t1
CROSS JOIN table2 t2;

结果示例

按照你给出的表数据:

  • table1的A列值:A、B、C
  • table2的B列值:1、2、3

执行上述SQL后,会得到9条结果,正好是你期望的组合:

A | 1
A | 2
A | 3
B | 1
B | 2
B | 3
C | 1
C | 2
C | 3

注意事项

如果两张表的数据量都很大,笛卡尔积会生成行数=表1行数×表2行数的结果集,可能会占用大量资源,所以执行前最好确认表的规模是否适合做这种查询哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:25