mysql - 根据最大日期将具有相同 ID 的列值更改为新值

标签 mysql sql ssms oracle-sqldeveloper

我想根据 SqlSMS 中的最大日期更改列的描述。 例如:

ID    | Description | Period   
====================    
N282  | FSV Trivex  | 2016-06-30    
N276  | Crystal AB  | 2016-06-30   
N282  | FSV 1.600   | 2014-10-31   
N276  | Vanity xxx  | 2014-08-09   

这里的问题在于 2 个 ID 具有不同的描述。我想将 ID 的描述值设置为等于 MAX DATE 的描述。

所以我想在最后得到这个,

ID    | Description | Period
====================
N282  | FSV Trivex  | 2016-06-30    
N276  | Crystal AB  | 2016-06-30   
N282  | FSV Trivex  | 2014-10-31    
N276  | Crystal AB  | 2014-08-09 

现在,ID 的所有描述都是相同的。

有数以千计的项目,但我只想了解如何通过联接来完成此任务。

谢谢。

最佳答案

你可以试试这个。

select t1.ID, t2.Description, t1.Period 
from tbl t1
inner join
   (select ID, Description  
   from tbl
   group by ID 
   having max(Period)) t2
on t1.ID = t2.ID;

检查这个.. <知识库> SQL Fiddle HERE

关于mysql - 根据最大日期将具有相同 ID 的列值更改为新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38528527/

相关文章:

mysql - 从撰写到集群 : Lost connection to MySQL server at 'reading authorization packet'

php - MySQL 查询 - 将 BLOB 的结果限制为 blob(行)中的 1 个唯一元素

mysql - DISTINCT 数据库中的一列

MySQL查询多个删除值

sql - 打印 MySQL 数据库(800 多个表)的 ER 图

sql - 如何为 SQL Server 中另一个表中的所有行添加一行

mysql - 如何在mysql中创建包含3个表的嵌套查询

c# - .Net SqlDataAdapter 和 SQL Server 中的触发器

sql - 如何通过ssms中的select插入值?我尝试时遇到错误

sql-server - 如何检查 SQL Server 表是否是系统表