MySQL生成日期序列与表关联的 SQL 查询

1、内部日期序列生成

首先,让我们看一下内部日期序列的生成部分。这部分的作用是创建从 2024 年 4 月 1 日开始的日期序列,直到 2024 年 12 月 31 日。SQL 使用 DATE_ADD 函数和一个嵌套的子查询来生成这个日期序列。

sql 复制代码
SELECT DATE_ADD('2024-04-01', INTERVAL seq.seq DAY) AS DATE
FROM (
    SELECT (t3.num*100 + t2.num*10 + t1.num) AS seq
    FROM (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t1,
         (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t2,
         (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t3
) AS seq
WHERE DATE_ADD('2024-04-01', INTERVAL seq.seq DAY) <= '2024-12-31';

2、外部表关联

接下来,我们将日期序列与 yonghu 表进行连接。在这个例子中,连接条件是一个始终为真的条件 1=1,这将导致日期序列中的每个日期与 yonghu 表中的所有行进行连接。

sql 复制代码
SELECT dates.date, yonghu.姓名, yonghu.国家, yonghu.`id2`
FROM (
    -- 上面的日期序列生成查询
) AS dates
JOIN yonghu ON 1=1;

3、结果分析

最终的结果将包含从 2024 年 4 月 1 日到 2024 年 12 月 31 日的每一天,以及 yonghu 表中每一行的姓名、国家和 id2 列的数据。这种连接方式会生成一个笛卡尔积,因为日期序列中的每个日期都会与 yonghu 表中的所有行进行匹配。

4、完整代码

sql 复制代码
SELECT dates.date, yonghu.姓名, yonghu.国家,yonghu.`id2`
FROM (
    SELECT DATE_ADD('2024-04-01', INTERVAL seq.seq DAY) AS DATE
    FROM (
        SELECT (t3.num*100 + t2.num*10 + t1.num) AS seq
        FROM (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t1,
             (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t2,
             (SELECT 0 AS num UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS t3
    ) AS seq
    WHERE DATE_ADD('2024-04-01', INTERVAL seq.seq DAY) <= '2024-12-31'
) AS dates
JOIN yonghu ON 1=1; 
相关推荐
张洛闻Eren9 分钟前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安25 分钟前
MySQL-触发器
数据库·mysql
白远山27 分钟前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro36 分钟前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148111 小时前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘
大猫和小黄1 小时前
MySQL锁与MVCC深度解析
mysql·mvcc·
lbb 小魔仙1 小时前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
李白客2 小时前
数据融合平台怎么选:批流一体、实时同步与数据质量的 7 个维度
数据库·数据库架构
数据库小学妹2 小时前
MySQL库存扣减实战:原子UPDATE、分桶方案与锁范围分析
数据库·后端·mysql
旺仔不是程序员2 小时前
LIMIT 1:PostgreSQL 只取一行的高效查询姿势
数据库·后端·sql