1

我对使用 SQL 很陌生,所以我希望有人能指出正确的方向来设置比我过去需要使用的稍微复杂的查询。

我有一个简单的 mySql 表,表示游戏的市场,如下所示:(后面的示例中的数字:

id seller price amount
1  tom    330   100
2  tom    370   500
3  tom    400   750
4  jerry  700   250

目前我正在使用 php 加载此表:

$items = dbquery("SELECT * 
                  FROM $marketdb 
                  WHERE price=$minprice 
                  ORDER BY amount;");

这很好,但我想做的是只为每个卖家加载一行:特别是,我只想为每个卖家加载“金额”值最大的行。在上面的示例中,这意味着结果将仅包含表中的最后两行。

4

1 回答 1

1

您可以有一个子查询,分别为每个卖家获取最大数量,然后再次将其与表连接以获取额外的列。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  seller, MAX(amount) amount
            FROM    tableName
            GROUP   BY seller
        ) b ON a.seller = b.seller AND
                a.amount = b.amount

或者

SELECT  a.*
FROM    tableName a
WHERE   a.amount =
        (
            SELECT  MAX(amount)
            FROM    tableName b
            WHERE   a.seller = b.seller
        )

两个查询都将输出

╔════╦════════╦═══════╦════════╗
║ ID ║ SELLER ║ PRICE ║ AMOUNT ║
╠════╬════════╬═══════╬════════╣
║  3 ║ tom    ║   400 ║    750 ║
║  4 ║ jerry  ║   700 ║    250 ║
╚════╩════════╩═══════╩════════╝
于 2013-06-27T01:21:35.883 回答