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

如何在SQL中合并两个表生成日期与ID的全组合结果表

实现SQL中日期与ID的全组合(笛卡尔积)

嘿,这个需求其实很好解决——你需要的是SQL里的笛卡尔积(Cross Join),它会把日期集合里的每一个日期,和ID集合里的每一个ID进行配对,生成所有可能的组合,正好匹配你想要的结果。

场景1:日期和ID在同一个表中

如果你的日期和ID原本存放在同一个表(比如示例里的表),但需要先提取出所有唯一的日期和唯一的ID,再做组合:

-- 假设你的表名为your_table
SELECT d.Date, i.ID
FROM (SELECT DISTINCT Date FROM your_table) d
CROSS JOIN (SELECT DISTINCT ID FROM your_table) i
ORDER BY d.Date, i.ID;

场景2:日期和ID在两个不同的表中

如果日期单独存在dates表(只有Date列),ID单独存在ids表(只有ID列),直接用CROSS JOIN关联即可:

SELECT d.Date, i.ID
FROM dates d
CROSS JOIN ids i
ORDER BY d.Date, i.ID;

结果验证

不管哪种场景,运行上述SQL后,都会生成你期望的全组合结果:

DateID
2017-12-251
2017-12-252
2017-12-253
2017-12-261
2017-12-262
2017-12-263
2017-12-271
2017-12-272
2017-12-273

简单说,CROSS JOIN就是不带任何连接条件的JOIN操作,它会返回两个表所有行的笛卡尔乘积,完全满足你要的“全组合”需求~

内容的提问来源于stack exchange,提问作者Yong Jin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:00:33