事情是这样的,我必须加入表格,我想加入他们。但是,我想把这些值建立在一个等式和另一个比较的基础上。这就好像我想在两个表的id相同,而表1的另一列必须在表2的同一列下面的时候引入这个值。这是我的两张table:
表1(销售表):
id produts_sold month
A1 100 '2020-01-01'
A3 500 '2020-01-01'
A1 100 '2020-02-01'
A2 300 '2020-02-01'
A3 200 '2020-02-01'
A1 400 '2020-04-01'
A2 500 '2020-04-01'
A1 400 '2020-06-01'
A1 500 '2020-08-01'
表2(价格表-显示价格更新的时间)
id price month
A1 100 '2019-12-01'
A2 200 '2019-12-01'
A3 300 '2019-12-01'
A1 200 '2020-02-01'
A1 400 '2020-03-01'
事情是这样的,我想给我的table带来最新的价格。但是我没有每个月的价格,就在更新的时候。基本上,我的最后一张table是这样的:
id produts_sold month price
A1 100 '2020-01-01' 100
A3 500 '2020-01-01' 300
A1 100 '2020-02-01' 200
A2 300 '2020-02-01' 200
A3 200 '2020-02-01' 300
A1 400 '2020-04-01' 400
A2 500 '2020-04-01' 200
A1 400 '2020-06-01' 400
A1 500 '2020-08-01' 400
以下是我迄今为止尝试过的:
select t1.*, t2.price
from table_1 t1
left join table_2 t2
on t1.id=t2.id and t1.month > t2.month
然而,这并不奏效。因为2月20日是12月19日之后,但是4月20日也是12月19日之后,我可能会在3月份得到4月份的价格,而不是2月份的价格。我怎样才能把这个左连接右?
1条答案
按热度按时间shstlldc1#
可以使用横向连接:
请注意,通常在进行此类比较时,比较将使用
<=
而不是<
.在这种情况下,还可以使用相关子查询: