我有一个名为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
我应该如何实现这一目标?
答案 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约束。