我了解,如果我使用类似的方法:
SELECT DISTINCT product_id FROM products;
它将返回具有唯一值的product_id列。但是,如果我也想从表中返回其他列,DISTINCT
还是最好的方法吗?
还是按声明分组更合适?
(我正在使用Postgres)
答案 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]