SQL查询最新版本的数据

时间:2018-12-06 15:29:18

标签: sql

我对SQL还是很陌生,它试图过滤掉不是该信息的最新版本的所有数据版本。这是该表的一个片段:

        TABLE1
PlacementID Version Usage
2066        2       4.4
2066        1       4.2
2066        0       4.1
3001        1       8.2
3001        0       7.9
5005        3       10.3
5005        2       9.9
5005        1       9.8
5005        0       9.9

这是我希望查询产生的结果:

        TABLE1
PlacementID Version Usage
2066        2       4.4
3001        1       8.2
5005        3       10.3

这是我的想法,由于明显的原因,它不起作用:

SELECT PlacementID, Version, Usage
FROM TABLE1
WHERE Version = MAX(VERSION)

是否有某种方法可以使MAX函数特定于我要查找的特定展示位置ID?这样就可以了。

1 个答案:

答案 0 :(得分:2)

只需添加subquery使其与相关

SELECT t.*
FROM TABLE1 t
WHERE Version = (SELECT MAX(t1.VERSION) FROM TABLE1 t1 WHERE t1.PlacementID = t.PlacementID);

但是,还有其他选择可以实现,但是它需要您使用的DBMS标签:

其中之一是:

SELECT t.*
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY PlacementID ORDER BY VERSION DESC) AS Seq
      FROM table t
     ) t
WHERE Seq = 1;