table1
只有索引列,table2 只包含版本。
我想选择每个索引及其最新版本。 (黄色细胞)
table2
有日期时间列,可以知道哪个是最新的。
当table1.idx = table2.belongTo
时,如何通过单个查询合并表?
最佳答案
编辑;更正答案以返回表 2 中的所有列。
您首先必须通过选择 max(datetime) 来派生第二个表,然后根据您提供的条件加入。
此处第二个表 t2
将根据每个 BelongTo
的 max(datetime)
值创建 row_number。感谢这个answer
select t1.*,t2.idx,t2.belongTo,t2.datetime1
from table1 t1
inner join
(
select t11.idx,t11.belongTo,t11.datetime1,count(*) as row_number from
table2 t11
inner join table2 t12
on t11.belongTo=t12.belongTo
and t11.datetime1 <= t12.datetime1
group by t11.belongTo,t11.datetime1
) t2 /*this table will create row_number based on max datetime value for each belongTo*/
on t1.idx=t2.belongTo
where t2.row_number=1
在此处查看 SQL Fiddle 演示
关于mysql - 选择两个条件不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503756/