sql数据库查询保留最新的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库查询保留最新的值?相关的知识,希望对你有一定的参考价值。

例如我的表是这样的
id SN Port Result
1 1 1 -123
2 1 2 -114
3 1 1 -113
4 2 1 -114
5 2 2 -111
6 2 2 -114
id是个自增加值。每次记录都会增加1. 我首先要取出每个SN里的Port的最新值。例如ID 1,3 是关于SN=1 Port =1的数据。我希望能取出 3,1,1 -113这个数据。希望通过sql语句得到的查询结果如下:
id SN Port Result
3 1 1 -113
2 1 2 -114
4 2 1 -114
6 2 2 -114
不知SQL的语句该如何写。

 select *

from 表 W

   where id=(select MAX(id) from 表 where SN=W.SN AND Port=W.Port)

追问

查询里from 表 W是什么意思。“表”是已经创建了的。W是一张新表吗?

追答

因为子查询要引用外层查询的属性列,内外层查询的表名字是一样的,为了区别这两个表,给 外层查询表起个别名。

参考技术A SELECT * FROM TABLE A,
(SELECT SN, PORT, MAX(ID) ID FROM TABLE B GROUP BY SN, PORT) B
WHERE A.SN=B.SN AND A.PORT=B.PORT AND A.ID=B.ID追问

可否麻烦解释一下。不理解?

追答

先查出来sn,port对应最大的ID。
然后再通过ID查数据。

以上是关于sql数据库查询保留最新的值?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询 - 组合两个表,删除重复项并仅保留最新的日期

有重复行,查询时只保留最新一行的sql

sql 子查询返回的值不止一个怎么解决?

ORACLE 查询去重保留第一条排序

oracle中把查询到的一条记录的某个字段赋值给一个变量

返回从最新日期算起的最后 365 内的值 ORACLE SQL