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

如何用SQL实现日期表与用户表的全量关联(无需新增常量列)

无需新增常量列实现日期表与用户表全关联的SQL方法

你要实现的是日期表中每一个日期与用户表中每一条记录的全关联(即笛卡尔积关联)。之前通过新增常量列做等值连接的方法可行,但完全没必要维护冗余列,直接用CROSS JOIN就能简洁实现需求:

SELECT c.Date_, k.user_email
FROM `operations-div-qa.7_dbtCloud.calendar_table_hours_st` c
CROSS JOIN `operations-div-qa.7_dbtCloud.table_key` k
ORDER BY c.Date_, k.user_email ASC

补充说明

CROSS JOIN的核心作用就是返回两个表所有行的组合,完美匹配你“指定日期范围内所有日期关联另一张表所有条目”的需求。和之前的方法相比:

  • 不需要额外创建或维护match这类无意义的常量列
  • 语法逻辑更直观,一眼就能识别是全关联操作
  • 避免了冗余列带来的数据维护成本和潜在的逻辑混淆

部分SQL方言(比如MySQL)也支持用逗号分隔两张表来隐式实现笛卡尔积,写法如下:

SELECT c.Date_, k.user_email
FROM `operations-div-qa.7_dbtCloud.calendar_table_hours_st` c,
     `operations-div-qa.7_dbtCloud.table_key` k
ORDER BY c.Date_, k.user_email ASC

但更推荐显式使用CROSS JOIN,可读性更强,也能避免因疏忽写错关联条件导致的意外笛卡尔积。

内容的提问来源于stack exchange,提问作者Scott Taft

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:21