用于删除非唯一行的SQL查询

时间:2014-08-28 14:56:00

标签: sql postgresql

我正在使用postgreSQL 9.2。

让我来看下表:

  id       name           definition
serial   varchar(128)        text
  1        name1           definition1
..........................................

我需要编写一个查询,删除所有具有相同名称的行,以便每行都有唯一的名称。如果两行具有相同的名称,则它们的定义也相同。

3 个答案:

答案 0 :(得分:1)

在名称上使用row_number()函数并删除所有包含row_number()>的行。 1

以下是一个示例查询:Deleting duplicates

答案 1 :(得分:0)

DELETE FROM mytable dd
WHERE EXISTS (
   SELECT *
   FROM mytable ex
   WHERE ex.name = dd.name
   AND ex.id < dd.id
   );

答案 2 :(得分:0)

为什么你首先让客户端应用程序在名称重复时添加行?