mysql - 选择两个条件不同的表

标签 mysql sql

enter image description here

table1 只有索引列,table2 只包含版本。

我想选择每个索引及其最新版本。 (黄色细胞)

table2 有日期时间列,可以知道哪个是最新的。

table1.idx = table2.belongTo时,如何通过单个查询合并表?

最佳答案

编辑;更正答案以返回表 2 中的所有列。

您首先必须通过选择 max(datetime) 来派生第二个表,然后根据您提供的条件加入。

此处第二个表 t2 将根据每个 BelongTomax(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 演示

http://sqlfiddle.com/#!9/e5ada/10

关于mysql - 选择两个条件不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503756/

相关文章:

mysql 获取计数和平均值

sql - 复杂的 SQL 连接查询

SQL Server - 分区表与聚集索引?

php - 如何将 Google Places API 返回的数据存储到我的数据库中?

php - 选择两个日期之间的数据

mysql - 将远程位置 B 到 L 的数据库中的相似数据集中到位置 A 的数据库中

php - 选择 SQL 上方和下方的行

mysql - DBLint 规则 31 意味着

sql - 对标签名称使用主键或唯一索引?

sql - 有没有办法让 SQL 语句从以整数为键的映射中返回字符串值?