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

MySQL中使用Cartesian multiplication填充空列的SQL查询写法

MySQL笛卡尔积实现全组合查询方案

你的判断是正确的,该需求可以通过交叉连接(笛卡尔积)实现。目标结果本质是tbl_hashs表中所有不重复h_id和所有不重复r_id的两两全组合,匹配tbl_sandbox中对应的hash值即可。

可直接执行的SQL语句

推荐使用标准CROSS JOIN语法,语义清晰可读性强,支持自动读取沙箱表的hash值,不需要硬编码:

SELECT
    h.h_id,
    r.r_id,
    s.hash
FROM
    (SELECT DISTINCT h_id FROM tbl_hashs) h
CROSS JOIN
    (SELECT DISTINCT r_id FROM tbl_hashs) r
CROSS JOIN
    (SELECT DISTINCT hash FROM tbl_sandbox) s;

如果习惯旧版MySQL的多表查询写法,也可以使用等价的无连接条件逗号分隔表写法,执行效果完全一致:

SELECT
    h.h_id,
    r.r_id,
    s.hash
FROM
    (SELECT DISTINCT h_id FROM tbl_hashs) h,
    (SELECT DISTINCT r_id FROM tbl_hashs) r,
    (SELECT DISTINCT hash FROM tbl_sandbox) s;

执行效果说明

上述SQL会先分别取出对应列的去重枚举值:

  • h_id列枚举值:1、2
  • r_id列枚举值:122、123
    通过交叉连接生成2*2=4条全组合记录,自动关联沙箱表的hash值,返回结果和你给出的预期结果完全匹配。后续如果tbl_hashs新增h_id或r_id数据,SQL会自动生成新的组合,不需要手动调整代码。

内容的提问来源于stack exchange,提问作者R.S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:51:34