Mysql SQL在两列上连接,第一列上有一个变体
我有两张桌子: 表1:平面图Mysql SQL在两列上连接,第一列上有一个变体,mysql,sql,hive,Mysql,Sql,Hive,我有两张桌子: 表1:平面图 ID Date Count 3 2017-01-01 10 2 2017-02-03 15 10 2017-01-30 8 表2:计划B ID Date Value 3 2017-01-02 11 2 2017-02-04 12 21 2017-01-30 3 3 2017-02-03 33 我想做的是连接(ID和Date)列上的
ID Date Count
3 2017-01-01 10
2 2017-02-03 15
10 2017-01-30 8
表2:计划B
ID Date Value
3 2017-01-02 11
2 2017-02-04 12
21 2017-01-30 3
3 2017-02-03 33
我想做的是连接(ID和Date)列上的两个表。
但是,在日期上,我想使用表1上的日期的第二天。
因此,联接表应如下所示:
PlanA.ID PlanA.Date PlanB.Date PlanA.Count PlanB.Value
3 2017-01-01 2017-01-02 10 11
2 2017-02-03 2017-02-04 15 12
这可能吗?
任何建议都将不胜感激 是的,有可能:
select
PlanA.ID,
PlanA.Date,
PlanB.Date,
PlanA.Count,
PlanB.Value
from
PlanA inner join PlanB
on (
PlanA.ID = PlanB.ID
and
PlanA.Date + INTERVAL 1 DAY = PlanB.Date
)
如果Date是Date类型的列,
+INTERVAL 1 DAY
将返回给定列的第二天,然后您可以执行连接。Date列看起来像是有效的MySQL日期格式。即使date列是char或varchar type+INTERVAL 1 DAY,也可以正常工作。@RaymondNijland是的,MySQL应该自动将其转换为日期。。。谢谢谢谢@fthiella。我是否可以为配置单元查询应用相同的脚本?由于我的配置单元版本不支持间隔,是否有其他方法不使用间隔?使用ADDDATE
和整数连用天:ADDDATE(PlanA.Date,1)
。在您的示例数据中,“下一个日期”总是第二天,但不一定如此,对吗?如果ID 3没有2017-01-02,我们会选择2017-01-03作为2017-01-01之后的下一个日期,是吗?不是,总是第二天。因此,如果没有2017-01-02,则不应选择任何。