抓住表中的所有行列,而不是在一列中具有非唯一值的行

时间:2018-08-23 10:37:00

标签: sql postgresql

我了解,如果我使用类似的方法: SELECT DISTINCT product_id FROM products;

它将返回具有唯一值的product_id列。但是,如果我也想从表中返回其他列,DISTINCT还是最好的方法吗?

还是按声明分组更合适?

(我正在使用Postgres)

1 个答案:

答案 0 :(得分:3)

SELECT DISTINCT ON (product_id) * FROM products

这将返回带有不同的product_id的行,并返回这些行的所有列。

如果您关心其他列中的数据(例如,您想要每个product_id的最新行,而不仅仅是随机行),则还应添加订单:

SELECT DISTINCT ON (product_id) * FROM products ORDER BY product_id, [other fields]