基本上table1看起来像这样
DATE ID PCS
1/2/2019 DIE6660 8
1/2/2019 DIE9240 9
2/2/2019 DIE9240 7
2/2/2019 DIT8990 1
2/2/2019 DIT6690 5
3/2/2019 DIE6770 2
4/2/2019 DIE9240 6
table2看起来像这样
DATE ID CON
1/2/2019 DIE9240 B
2/2/2019 DIE9240 B
2/2/2019 DIT6690 B
3/2/2019 DIE6770 N
4/2/2019 DIE9240 N
所以我想关联这些表,但必须确保table2 ID必须与table1 ID中的最后日期相关
因此,基本上,表2中“ 4/2/2019”中的“ DIE9240”必须与表1中“ 2/2/2019”中的“ DIE9240”相关。它不能与“ 4/2/2019”相关联,因为它是同一日期(不在此日期之前),也不能与“ 1/2/2019”相关,因为它不是该日期之前的最后一个日期。
反正有这样做吗? 非常感谢
答案 0 :(得分:0)
您可以像这样联接表:
select *
from table1 t1 inner join table2 t2
on
t2.id = t1.id
and
t1.date = (select max(date) from table1 where id = t2.id and date < t2.date)
您可以将*
替换为要选择的列名称。
您已经用MySql和SQLite标记了您的问题,并且如果您使用的是SQLite,则示例数据中日期的格式不可比,并且不会产生正确的结果,因为将SQLite日期视为字符串。
您应该将格式更改为YYYY-MM-DD
。
参见demo。