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

避免在PostgreSQL中的SELECT查询中重复值,postgresql,duplication,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 我应该

我有一个名为
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

我应该如何实现这一点?

如果您想获得不重复的姓名列表,请使用“独特姓名”

select distinct name from product;
您还可以使用row_number()添加行号


如果要获取不重复的名称列表,请使用“独特名称”

select distinct name from product;
您还可以使用row_number()添加行号


如果要获取不重复的名称列表,请使用“独特名称”

select distinct name from product;
您还可以使用row_number()添加行号


如果要获取不重复的名称列表,请使用“独特名称”

select distinct name from product;
您还可以使用row_number()添加行号


PostgreSQL的语法可以非常有效地实现这一点:

select   distinct on (name)
         id,
         name
from     product
order by name,
         id;
按名称排序是必需的


PostgreSQL有一种语法可以非常有效地做到这一点:

select   distinct on (name)
         id,
         name
from     product
order by name,
         id;
按名称排序是必需的


PostgreSQL有一种语法可以非常有效地做到这一点:

select   distinct on (name)
         id,
         name
from     product
order by name,
         id;
按名称排序是必需的


PostgreSQL有一种语法可以非常有效地做到这一点:

select   distinct on (name)
         id,
         name
from     product
order by name,
         id;
按名称排序是必需的


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

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

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

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

DISTINCT
选择所有列具有不同值的所有行。在您的示例中,
id
name
的每个组合都是不同的,您将获得所有行。
distinct
选择所有列具有不同值的所有行。在您的示例中,
id
name
的每个组合都是不同的,您将获得所有行。
distinct
选择所有列具有不同值的所有行。在您的示例中,
id
name
的每个组合都是不同的,您将获得所有行。
distinct
选择所有列具有不同值的所有行。在您的示例中,
id
name
的每个组合都是不同的,您必须将
id
添加到
order by
中才能获得一致的所需结果您必须将
id
添加到
order by
中才能获得一致的所需结果您必须将
id
添加到
order by
中才能获得一致的所需结果您必须将
id
添加到
中通过
获得一致的期望结果