这是我的样本表:
表1:
ID Runnum Thickness Date
1 2 1.23 1/8/2015
2 2 2.32 1/9/2015
3 3 2.21 1/9/2015
4 4 3.12 1/8/2015
表2 :
ID Runnum Insitu
1 2 1.23
2 3 2.32
3 4 2.21
4 5 3.12
我想要的结果:
Runnum Insitu Runnum Thickness Date
2 1.23 2 2.32 1/9/2015
3 2.32 3 2.21 1/9/2015
4 2.21 4 3.12 1/8/2015
我想加入table1和table2并选择包含最新记录的副本, 这是我到目前为止的询问。
SELECT a.Runnum, a.insitu, b.Runnum, b.thickness
FROM test.dummy_ease a
INNER JOIN (SELECT runnum, thickness, times FROM test.dummy_xrf group by runnum) AS b
ON a.runnum = b.runnum
从该查询返回的值几乎是正确的,除了它没有返回最新值的重复值。
答案 0 :(得分:1)
我假设table1中的ID
设置为auto_increment,而最近的一个也基于此条件,那么您必须将table1自我连接到最新数据
select a.Runnum,
b.insitu,
b.Runnum Runnumb,
a.Thickness
from Table1 a
join (select max(ID) ID ,Runnum
from Table1
group by Runnum) a1
using(ID,Runnum)
join Table2 b ON a.Runnum = b.Runnum
如果最近的一个依赖于最近的日期条件,那么在内部查询中,您必须选择日期列的最大值,但是从您的示例数据看起来您已将日期存储为varchar类型,不会将其视为您必须的日期对象首先使用str_to_date
将其转换为日期对象,然后计算最大日期并再次加入您的table1查询将类似于Demo