【发布时间】:2014-10-08 23:12:59
【问题描述】:
我们有两个表格,布局如下:
Products
ID | Item | Supplier
1 | Harry Potter | Warner
2 | Harry Potter | Warner
3 | Game of Thrones | HBO
4 | The Simpsons | Warner
5 | The Simpsons | Warner
与
Prices
ID | Price
1 | 10.99
2 | 20.00
3 | 20.00
4 | 10.00
5 | 12.00
我正在尝试获取价格最低的商品的 ID,其中有两个商品具有相同的名称和供应商。
我可以得到有重复的行:
SELECT
Products.ID,Products.Item,Products.Supplier,Prices.price
FROM
Products
LEFT JOIN Prices ON Prices.ID = Products.ID
WHERE Products.ID IN (
SELECT ID FROM Products WHERE Supplier="Warner" GROUP BY Item HAVING count(*) > 1
)
然后如何修改它以仅显示价格最低的重复项目名称的 Products.ID ?
我尝试了 ORDER BY,但这对我来说是一个错误。
结果应该是:
ID | Item | Supplier | Price
1 | Harry Potter | Warner | 10.99
4 | The Simpsons | Warner | 10.00
谢谢,
瑞克
【问题讨论】:
-
您如何知道与产品相关的价格?您确定
Prices.ID将始终匹配Product.ID吗? -
他们在 ID 上加入。目前它只是显示最高价格。
-
这意味着一个产品只能有一个价格......那你为什么不在
Products表中添加一个字段price? -
这仍然只是给出具有相同名称的行值,而不是显示价格最低的重复项目,还是我错过了一些简单的东西!?
标签: mysql