首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除最后一条记录

问如何删除最后一条记录
EN

Stack Overflow用户
提问于 2011-11-03 12:28:17
回答 1查看 2.8K关注 0票数 0

使用SQL Server 2000

表格

代码语言:javascript
复制
ID Date Value

001 23-02-2009 300
001 24-02-2009 400
001 25-02-2009 150
002 23-02-2009 300
002 24-02-2009 400
003 23-02-2009 150
.....
.....

从上面的表格中,我想删除每个id的最后日期。

如何进行查询

预期输出

代码语言:javascript
复制
 ID Date Value

    001 23-02-2009 300
    001 24-02-2009 400
    002 23-02-2009 300
    .....
    .....
    .....

需要查询帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-03 12:40:16

您可以通过在DELETE语句中执行子选择和联接来实现这一点。例如:

代码语言:javascript
复制
DECLARE @myTable TABLE(ID VARCHAR(3), [Date] DATETIME, Value INT)
INSERT INTO @myTable VALUES('001', CONVERT(DATETIME, '23-02-2009', 103), 300)
INSERT INTO @myTable VALUES('001', CONVERT(DATETIME, '24-02-2009', 103), 400)
INSERT INTO @myTable VALUES('001', CONVERT(DATETIME, '25-02-2009', 103), 150)
INSERT INTO @myTable VALUES('002', CONVERT(DATETIME, '23-02-2009', 103), 300)
INSERT INTO @myTable VALUES('002', CONVERT(DATETIME, '24-02-2009', 103), 400)
INSERT INTO @myTable VALUES('003', CONVERT(DATETIME, '23-02-2009', 103), 150)

DELETE @myTable
FROM @myTable M
JOIN (SELECT ID, MAX([Date]) as [Date] FROM @myTable GROUP BY [ID]) G
    ON G.ID = M.ID AND G.[Date] = M.[Date]

SELECT * FROM @myTable

请注意,我在SQL Server2005上测试了这个SQL,但我相信它在SQL Server2000中也应该可以工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7990265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档