gpt4 book ai didi

sql - 在 Oracle 中删除小于最大序列号的记录

转载 作者:行者123 更新时间:2023-12-02 04:55:27 25 4
gpt4 key购买 nike

我有一个包含以下列的表格

以下是部分记录

DOC_ID  DOC_NAME  ORG_ID ADD_DT
1 123.DOC 1 4/1/2014
2 124.DOC 1 4/2/2014
3 125.DOC 1 4/1/2014
4 126.DOC 1 4/1/2014
5 123.DOC 2 4/1/2014
6 124.DOC 2 4/2/2014
7 125.DOC 2 4/1/2014
8 126.DOC 2 4/1/2014

如何为每个 ORG_ID 保留具有最大 DOC_ID 的记录并删除所有其他记录。

我想在我的表格中看到的是

DOC_ID  DOC_NAME  ORG_ID ADD_DT
4 126.DOC 1 4/1/2014
8 126.DOC 2 4/1/2014

非常感谢您

最佳答案

您可以使用 rank() 分析函数来查找要删除的行,并使用 rowid 伪列将它们关联起来。

DELETE FROM my_table
WHERE ROWID IN (SELECT ROWID
FROM (SELECT RANK() OVER
(PARTITION BY org_id ORDER BY doc_id DESC) AS rk
FROM my_table)
WHERE rk > 1)

关于sql - 在 Oracle 中删除小于最大序列号的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938711/

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