避免在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
添加到中通过
获得一致的期望结果