0
我有一个数据库,它与下面的'小部件'数据库相似。GROUP BY PostgreSQL查询我需要一个不在GROUP BY子句中的列
widget_id | vendor_id | price
------------------------------
1 | 101 | 10.00
2 | 101 | 9.00
3 | 102 | 6.00
4 | 102 | 7.00
我想找到供应商最廉价的部件,所以像下面的输出:
widget_id | vendor_id | price
------------------------------
1 | 101 | 10.00
3 | 102 | 6.00
在MySQL或SQLite的,我可以查询
SELECT widget_id, vendor_id, min(price) AS price FROM widgets GROUP BY(vendor_id)
然而,似乎这与SQL规范相反。在PostgreSQL中,我无法运行上述查询。错误消息是“widget_id必须出现在GROUP BY子句中或在聚合函数中使用”。我可以看到PostgreSQL的观点,但想要拥有最低价格的小部件的widget_id似乎是完全合理的。
我在做什么错?
您在MySQL和SQLite中的代码不正确。不保证返回正确的结果。 –