sql >> Databáze >  >> RDS >> Mysql

Vyberte poslední řádek pomocí GROUP BY v MySQL

Chcete skupinové maximum ; v podstatě seskupte tabulku plateb, abyste identifikovali maximální záznamy, a poté výsledek spojte zpět se sebou, abyste získali další sloupce:

SELECT users.*, payments.method, payments.id AS payment_id
FROM   payments NATURAL JOIN (
  SELECT   user_id, MAX(id) AS id 
  FROM     payments
  GROUP BY user_id
) t RIGHT JOIN users ON users.id = t.user_id

Všimněte si, že MAX(id) nemusí být „poslední platba ", v závislosti na vaší aplikaci a schématu:obvykle je lepší určit "nejnovější " na základě TIMESTAMP než založené na syntetických identifikátorech, jako je AUTO_INCREMENT sloupec primárního klíče.



  1. Proč je používání jednotkových testů skvělou investicí do vysoce kvalitní architektury

  2. Oprava „ERROR 1250 (42000):Tabulku „…“ z jednoho z SELECT nelze použít v klauzuli ORDER“ v MariaDB

  3. smazat pomocí where a nebo

  4. Návrh databáze:objekty s různými atributy