当前位置: 首页 > news >正文

SQL 生成日期与产品的所有组合:CROSS JOIN(笛卡尔积)

CROSS JOIN​​(笛卡尔积)是一种 SQL 连接方式,它会将 ​​第一个表的每一行​​ 与 ​​第二个表的每一行​​ 进行组合,生成所有可能的配对。

  • 如果表 A 有 m行,表 B 有 n行,那么 A CROSS JOIN B的结果会有 m × n行。

  • ​不依赖任何连接条件​​(没有 ON或 WHERE子句),直接组合所有数据。

-- 显式 CROSS JOIN
SELECT * FROM table1 CROSS JOIN table2;-- 隐式 CROSS JOIN(用逗号分隔表)
SELECT * FROM table1, table2;

虽然笛卡尔积通常会导致数据量爆炸(慎用!),但在特定场景下很有价值:

  1. ​生成所有可能的组合。

  2. 计算排列组合或矩阵。例如:统计不同性别和年龄段的用户分布。

  3. ​测试数据生成​​。快速创建大量测试数据(如压力测试)。


​场景​​: 生成日期与产品的所有组合

-- 生成日期序列的递归CTE(MySQL 8.0+)
WITH RECURSIVE date_range AS (SELECT '2023-01-01' AS dateUNION ALLSELECT DATE_ADD(date, INTERVAL 1 DAY) FROM date_range WHERE date < '2023-01-05'
)
SELECT d.date,p.product_id,p.product_name
FROM date_range d
CROSS JOIN products p
ORDER BY d.date, p.product_id;

​思路​​:

  • 用递归CTE date_range 生成连续日期序列。
  • 通过 CROSS JOIN 将每个日期与产品表中的所有记录组合。

​建表示例​​:

CREATE TABLE products (product_id INT PRIMARY KEY,product_name VARCHAR(100) NOT NULL
);INSERT INTO products (product_id, product_name) VALUES
(1, 'Laptop'),
(2, 'Smartphone'),
(3, 'Headphones');

http://www.dtcms.com/a/327203.html

相关文章:

  • Linux 系统运维、网络、SQL Server常用命令
  • 机器学习 [白板推导](九)[变分推断]
  • DRAM、SRAM、NAND Flash、NOR Flash、EEPROM、MRAM存储器你分得清吗?
  • 用pom文件从nexus3拉依赖,无法拉取的一个问题
  • 逻辑删除 vs 物理删除:MyBatis-Plus 实现指南与实践
  • 可泛化逻辑推理Python编程作为医疗AI发展方向研究
  • 关于数据库的restful api接口工具SqlRest的使用
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • 2025年国赛新规解读:8-12最新发布文件
  • 初识数据结构——优先级队列(堆!堆!堆!)
  • 偶遇冰狐智能辅助的录音
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • 教程 | 用Parasoft SOAtest实现高效CI回归测试
  • 从零到一的 Python CI/CD 实战指南:用 GitHub Actions 与 Jenkins 打造稳定、可持续交付的工程力
  • 下一代防火墙技术
  • 【ad-hoc 最小生成树 构造】P8957 「CGOI-3」巫泡弹弹乐|普及+
  • 【Redis在智能健身镜中的作用:运动指导与用户数据同步】
  • 计算机网络摘星题库800题笔记 第6章 应用层
  • 使用正则中的sub实现获取我们匹配的字符串,然后追加指定字符
  • 计算机网络---防火墙(Firewall)
  • pyside控件_左右范围滑动控件
  • 深层神经网络
  • torch.max() 函数使用
  • uv 配置和简单使用
  • 6深度学习Pytorch-神经网络--过拟合欠拟合问题解决(Dropout、正则化、早停法、数据增强)、批量标准化
  • OpenHarmony编译与烧录
  • 【完美解决】在 Ubuntu 24.04 上为小米 CyberDog 2 刷机/交叉编译:终极 Docker 环境搭建指南
  • 【LeetCode】2. 两数相加
  • 一台云主机“被黑”后的 24 小时排查手记
  • 【力扣 Hot100】刷题日记