Mysql 结果按一列分组,并根据第二列的最大值显示不同的行

Mysql 结果按一列分组,并根据第二列的最大值显示不同的行,mysql,sql,Mysql,Sql,用户表: id | name 1 | sai 2 | krishna 投标表格: bid_id | listing_id | user_id | bid_amount 1 | 999 | 1 | 100 2 | 999 | 2 | 200 3 | 999 | 2 | 300 所以我希望得到的结果是 bid_id | listing_id | bid_amount | name 1 | 999 | 100 | sai 3 | 999

用户表:

id | name
1 | sai
2 | krishna
投标表格:

bid_id | listing_id | user_id | bid_amount
1 | 999 | 1 | 100
2 | 999 | 2 | 200
3 | 999 | 2 | 300
所以我希望得到的结果是

bid_id | listing_id | bid_amount | name
1      | 999        | 100        | sai
3      | 999        | 300        | krishna
其中,我希望结果按
listing\u id
分组,但仅为
bid\u amount
为max的用户显示不同的行,该用户有一个派生表(子查询),返回每个列表的最高出价。加入该结果并加入用户:

SELECT COALESCE(b1.bid_id, -1),
       COALESCE(b1.listing_id, -1),
       COALESCE(b1.bid_amount, 0),
       u.name
FROM user u
LEFT JOIN bid b1
    ON u.id = b1.user_id
LEFT JOIN
(
    SELECT user_id, MAX(bid_amount) AS bid_amount
    FROM bid
    GROUP BY user_id
) b2
    ON b1.user_id    = b2.user_id AND
       b1.bid_amount = b2.bid_amount
select b1.bid_id, b1.listing_id, b2.bid_amount, u.name
from bid b1
join (select listing_id, max(bid_amount) as max_bid_amount
      from bid
      group by listing_id) b2
     on b1.listing_id = b2.listing_id and b1.bid_amount = b2.max_bid_amount
join user u on b.user_id = u.id
有一个派生表(子查询),返回每个列表的最高出价。加入该结果并加入用户:

select b1.bid_id, b1.listing_id, b2.bid_amount, u.name
from bid b1
join (select listing_id, max(bid_amount) as max_bid_amount
      from bid
      group by listing_id) b2
     on b1.listing_id = b2.listing_id and b1.bid_amount = b2.max_bid_amount
join user u on b.user_id = u.id
这应该做到:

SELECT      bid.bid_id, bid.listing_id, bid.bid_amount, users.name
FROM        bid bid
INNER JOIN  user users ON bid.user_id = users.id
INNER JOIN  (SELECT     MAX(bid.bid_amount) AS MaxBid, bid.user_id
             FROM       bid bid
             GROUP BY   bid.user_id
             ) MaxBids ON bid.bid_amount = MaxBids.MaxBid
这应该做到:

SELECT      bid.bid_id, bid.listing_id, bid.bid_amount, users.name
FROM        bid bid
INNER JOIN  user users ON bid.user_id = users.id
INNER JOIN  (SELECT     MAX(bid.bid_amount) AS MaxBid, bid.user_id
             FROM       bid bid
             GROUP BY   bid.user_id
             ) MaxBids ON bid.bid_amount = MaxBids.MaxBid

您使用的是哪种数据库管理系统?(答案可能取决于产品。)mysql dbms 5.x版本您使用的是哪种dbms?(答案可能取决于产品。)mysql dbms 5.x版本