Mysql
 sql >> Base de données >  >> RDS >> Mysql

Joindre la ligne avec la ligne MAX dans une autre table ?

C'est fâcheusement compliqué. Vous feriez mieux d'avoir un drapeau "gagnant" dans chaque enchère_enchère gagnante.

SELECT * FROM auctions a
INNER JOIN 
(
    /* now get just the winning rows */
    SELECT * FROM auction_bids x
    INNER JOIN
    (
        /* how to tell the winners */
        SELECT auction_id, MAX(bid_amount) as winner
        FROM auction_bids
        GROUP BY auction_id
    ) y
    ON x.auction_id = y.auction_id
    AND x.bid_amount = y.winner
) b
ON a.auction_id = b.auction_id

Notez que les enchères sans enchère ne seront pas répertoriées du tout, et les enchères avec égalité (cela peut-il arriver ?) apparaîtront une fois pour chaque enchère égale.