从表MySQL中选择最新的重复记录

时间:2015-01-08 05:11:32

标签: mysql select mysql-workbench

这是我的样本表:

表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

从该查询返回的值几乎是正确的,除了它没有返回最新值的重复值。

1 个答案:

答案 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 

DEMO

如果最近的一个依赖于最近的日期条件,那么在内部查询中,您必须选择日期列的最大值,但是从您的示例数据看起来您已将日期存储为varchar类型,不会将其视为您必须的日期对象首先使用str_to_date将其转换为日期对象,然后计算最大日期并再次加入您的table1查询将类似于Demo