Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połączyć wiersz z wierszem MAX w innej tabeli?

To irytująco skomplikowane. Lepiej byłoby z flagą „zwycięzcy” w każdej zwycięskiej licytacji.

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

Należy pamiętać, że aukcje z ofertami zerowymi w ogóle nie będą wystawiane, a aukcje z remisami (czy to się stanie?) pojawią się raz dla każdej zremisowanej oferty.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:ponowne użycie autoinkrementacji podczas wstawiania

  2. MySQL - wymuś nieużywanie pamięci podręcznej do testowania szybkości zapytań

  3. Przechowywanie danych z tabeli MySQL jako CSV za pomocą PDO przez przeglądarkę

  4. Schemat bazy danych Laravel, wartość nullable Foreign

  5. Zamienić wartości null w sql za pomocą instrukcji select w mysql?