首页/数据/SQL 速查/CROSS JOIN 笛卡尔积
本包目录(311 条)

CROSS JOIN 笛卡尔积

两表无条件配对得到所有组合:常用于生成“尺码 × 颜色”这类组合集,误用时行数按乘积增长。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT s.size, c.color
FROM sizes s
CROSS JOIN colors c
ORDER BY s.size, c.color;
行数左表行数 × 右表行数
等价FROM a, b(不带 WHERE 连接条件)
MySQL 细节MySQL 中 CROSS JOIN 带 ON 时按内连接处理,写 INNER JOIN 更清晰
生成日期 × 门店之类的维度组合时,配合 LEFT JOIN 与 COALESCE 可补全“零值”报表行。

易错点

  • 两表都忘写连接条件时结果瞬间膨胀(1000×1000 即百万行),生产查询必须核对行数
  • 生成大批组合时注意结果集大小与临时表落盘,必要时分批生成

数据来源与参考

  • MySQL 8.0 Reference Manual · JOIN · CROSS JOIN
  • PostgreSQL Documentation · CROSS JOIN
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌