如何仅联接另一个表中的最新日期值并防止重复

时间:2019-01-23 12:27:30

标签: sql join duplicates

我正在尝试从表b查找唯一值并将其放入表a。 表b存储了随日期变化的多个值。 我想加入,但只从表b中获取具有最新日期的值。

表a

Unique ID 
1
2

表b

Date           Unique ID  Price
01/01/2019     1          100
01/02/2019     1          101
01/03/2019     1          102
01/01/2019     2          90
01/02/2019     2          91
01/03/2019     2          92

预期结果

Unique ID      Price      Date
1              102        01/03/2019
2              92         01/03/2019

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

具有一个子查询,该查询返回每个唯一ID及其最大日期。 IN的结果。

select * from tablename
where (UniqueID, date) in (select UniqueID, max(date)
                           from tablename
                           group by UniqueID)

答案 1 :(得分:0)

您要相关子查询:

select b.*
from tableb b
where b.date = (select max(b1.date) from tableb b1 where b1.UniqueID = b.UniqueID);

如果您想使用JOIN,则可以对子查询执行JOIN

select a.UniqueID , b.Price, b.Date
from tablea a inner join
     tableb b
     on b.UniqueID = a.UniqueID 
where b.date = (select max(b1.date) from tableb b1 where b1.UniqueID = a.UniqueID);

答案 2 :(得分:0)

相关子查询?

select b.*
from b
where b.date = (select max(b2.date) from b b2 where b2.unique_id = b.unique_id);