如何为 ID 不同的列 select 唯一值?

How to select unique values for a column where the IDs are different?

我有一个返回 ID 列和值列的 select 语句。 ID 列中的值不同,但值列中有重复项。

这是一个例子:

    ID    |    Value
-----------------------
    1     |     Bob
    2     |     Jane
    3     |     Bob
    4     |     Mike
    5     |     Suzy
    6     |     Mike

如您所见,有 4 个唯一名称值,但返回了 6 条记录,因为 ID 都不同。通常不应该这样做,但这只是示例数据(不是真正使用名称),对于我需要做的,我需要删除具有重复名称的记录。

我试图使用超前或滞后函数,但无法使用它来删除重复项。

关于如何修改直接的 select 语句以获得两列但只有唯一名称的任何想法?

尝试:

SELECT MIN(ID), Value
FROM table
GROUP BY Value

选择:

SELECT DISTINCT MIN(ID) OVER (PARTITION BY Value), Value
FROM table

这将删除具有重复名称的记录,但保留 ID 最低的第一条记录。

DELETE FROM table t
WHERE EXISTS (
   SELECT null FROM table t1
   WHERE t.name = t1.name AND t.id < t1.id
)

如果你只想select条记录,那么

SELECT * FROM table t
WHERE NOT EXISTS(
   SELECT null FROM table t1
   WHERE t.name = t1.name AND t.id < t1.id
)