避免在PostgreSQL中的SELECT查询中重复值

时间:2013-10-17 09:14:00

标签: postgresql duplication

我有一个名为product的表,其中包含两列:

id  name
1   p1
2   p2
3   p1
4   p3
5   p4

我运行以下查询:

SELECT DISTINCT id, name FROM product;

结果,PostgreSQL给了我以下输出:

id  name
1   p1
2   p2
3   p1
4   p3
5   p4

我想避免name字段中的值重复,因此所需的输出应如下所示:

1   p1
2   p2
4   p3
5   p4

我应该如何实现这一目标?

3 个答案:

答案 0 :(得分:3)

PostgreSQL的语法非常有效:

select   distinct on (name)
         id,
         name
from     product
order by name,
         id;

需要按名称排序。

http://www.postgresql.org/docs/9.0/static/sql-select.html#SQL-DISTINCT

答案 1 :(得分:0)

如果您想获得非重复的名单,请使用'distinct name'

select distinct name from product;

您还可以使用row_number()

添加行号
select row_number() over (order by name ) as id, name_list.name
from (select distinct  name from product) as name_list;

答案 2 :(得分:0)

我建议使用上面的select distinct on()语句。但是,如果您不想将重复数据放入表中,可以在名称列上添加UNIQUE约束。