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; 
相关推荐
倔强的石头_1 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB3 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou641 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE2 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫3 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩3 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8783 天前
5.Mysql事务隔离级别与锁机制
mysql
笃行3504 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3504 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库