假设我有一个产品表和一个订单表。我想列出每个产品的最新订单
我想像这样
select name, description, price, max(date)
from product
join order on order.item = product.name
group by order.item
但是我的 postgres 数据库提示说我不能有原始字段(sqlite 没有提示)我需要有聚合函数。我可以为每一列放置 min() 但这似乎是一种浪费,因为特定产品的所有值始终相同。我想知道“不同”,但这似乎对这里没有帮助
注意 - 我需要标准的可移植 SQL,而不是特定于任何给定的引擎。
最佳答案
在 Postgres 中,您可以使用 distinct on
:
select distinct on (o.item) p.name, description, price, date
from product p join
order o
on o.item = p.name
order by o.item, date desc;
我在查询中添加了别名。我强烈建议您始终限定所有列名。我会这样做,但在大多数情况下我不知道它们来自哪里。
关于sql select with group by 并加入查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51990200/