我有一个返回 ID 列和值列的 select 语句。 ID 列中的值不同,但值列中存在重复项。
这是一个例子:
ID | Value
-----------------------
1 | Bob
2 | Jane
3 | Bob
4 | Mike
5 | Suzy
6 | Mike
正如您所看到的,有 4 个唯一名称值,但返回了 6 条记录,因为 ID 都不同。通常不应该这样做,但这只是示例数据(并非真正使用名称),对于我需要做的事情,我需要删除具有重复名称的记录。
我尝试使用领先或滞后函数,但无法删除重复项。
关于如何修改直接选择语句以获取两列但仅具有唯一名称的任何想法?
最佳答案
这会删除具有重复名称的记录,但保留 ID 最低的第一条记录。
DELETE FROM table t
WHERE EXISTS (
SELECT null FROM table t1
WHERE t.name = t1.name AND t.id < t1.id
)
如果您只想选择记录,那么
SELECT * FROM table t
WHERE NOT EXISTS(
SELECT null FROM table t1
WHERE t.name = t1.name AND t.id < t1.id
)
关于oracle - 如何为 ID 不同的列选择唯一值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35349344/