这是我之前查询的后续问题。我希望在这种情况下发布一个新问题是合适的:Selecting a subset of rows from a PHP table
我有一个看起来像这样的 sql 表(例如):
id seller price amount
1 tom 350 500
2 tom 350 750
3 tom 350 750
4 tom 370 850
5 jerry 500 1000
我想为每个卖家选择一行:特别是对于每个卖家,我想要价格最便宜的行,并且在该价格下数量最多。在上面的示例中,我想要第 2 行和第 5 行(或第 3 行和第 5 行,只要我只得到其中一个,我不在乎得到 2 和 3 中的哪一个)。
我正在使用这个:
dbquery("SELECT a.* FROM $marketdb a
INNER JOIN
(
SELECT seller, MAX(amount) amount
FROM $marketdb
WHERE price=$minprice
GROUP BY seller
) b ON a.seller = b.seller AND
a.amount = b.amount;");
但这给了我第 2,3 和 5 行,我只想要第 2 和第 3 行之一。
我也有一个挥之不去的怀疑,这也可能并不总是返回最低价格行。到目前为止,我的测试一直被这样一个事实所迷惑,即我为给定的卖家输入了不止一行的相同金额。
如果有人能指出我的错误,我将不胜感激。
谢谢!
编辑:对不起,我没有问我的意思。我希望从全球最低价格返回的行,每个卖家最多 1 个,而不是每个卖家的最低价格。这将只是上面的第 2 行或第 3 行。对不起!