我有一个返回ID列和值列的select语句。 ID列中的值是不同的,但值列中有重复项。
以下是一个例子:
{{1}}
正如您所看到的,有4个唯一的名称值,但返回了6条记录,因为ID都不同。这通常不应该这样做,但这只是示例数据(不是真正使用名称),而我需要做的是删除名称重复的记录。
我试图使用超前或滞后功能,但无法将其删除重复项。
有关如何修改直接选择语句以获取两列但只有唯一名称的任何想法?
答案 0 :(得分:3)
这会删除具有重复名称的记录,但会留下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
)
答案 1 :(得分:0)
尝试:
SELECT MIN(ID), Value
FROM table
GROUP BY Value
替代:
SELECT DISTINCT MIN(ID) OVER (PARTITION BY Value), Value
FROM table