gpt4 book ai didi

mysql - MYSQL中使用时如何删除最新的

转载 作者:行者123 更新时间:2023-11-29 11:06:12 26 4
gpt4 key购买 nike

以下为我提供了相关记录的完整列表:

SELECT ID, NAME, STATE, VDATE, COMPLETE_DATE 
from db
where NAME NOT IN (SELECT NAME from db where COMPLETE_DATE != '')
ORDER BY NAME, STATE, VDATE DESC;

不幸的是,我对每个名称、州的所有非最新记录(根据 VDATE)感兴趣。基本上,完全相同的结果减去包含最新 VDATE 的每个名称/状态组合的记录。对于每个名称、状态组合,可能有 10 条记录,每条记录的 VDATE 相同或不同。

如何从此数据集中消除最新的 VDATE?

最佳答案

获取每个名称的最大 vdate,声明并在其后使用 not in

SELECT ID, NAME, STATE, VDATE, COMPLETE_DATE 
from db
where (NAME,STATE,VDATE) NOT IN (SELECT NAME,STATE,MAX(VDATE) as MAXVDT
from db
where COMPLETE_DATE != ''
GROUP BY NAME,STATE)
ORDER BY NAME, STATE, VDATE DESC

或使用连接与包含每个名称和州的最大日期的派生表。

select d1.ID, d1.NAME, d1.STATE, d1.VDATE, d1.COMPLETE_DATE 
from db d1
join (SELECT NAME,STATE,MAX(VDATE) as MAXVDT
from db
where COMPLETE_DATE != ''
GROUP BY NAME,STATE) d2
on d1.name = d2.name and d1.state = d2.state
where d1.vdate <> d2.maxvdt
order by d1.NAME, d1.STATE, d1.VDATE desc

请注意,如果每个名称、状态组合只有一个 vdate,则两个查询都不会在结果中返回这些名称、状态组合,因为该日期将是该组合的 max vdate .

关于mysql - MYSQL中使用时如何删除最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com