MySql:Raggruppare ed esporre l'ultimo record
Versione del 28 mag 2025 alle 10:20 di Andrea (discussione | contributi)
← Torna a MySQL Caterogy:MySQL
Soluzione #1
Ad esempio: prendendo in considerazione un listino prezzi ( in questo esempio: listino fasi di lavoro ) e produrre una lista degli ultimi prezzi ( i più recenti come data attivazione ), è necessario ordinare per prodotto e fase di lavoro ed estrarre solamente il prezzo più recente.
SELECT
workphasepricelist.from_date,
workphasepricelist.price
FROM aker_workphasepricelists as workphasepricelist
WHERE workphasepricelist.id =
( SELECT id FROM aker_workphasepricelists
WHERE workphasetype_id = workphasepricelist.workphasetype_id AND product_id = workphasepricelist.product_id
ORDER BY from_date DESC
LIMIT 1 )
Soluzione #2
|
Dati: Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1 |
Voglio ottenere: Id Name Other_Columns ------------------------- 3 A A_data_3 5 B B_data_2 6 C C_data_1 |
SELECT m1.* FROM messages m1 LEFT JOIN messages m2 ON (m1.name = m2.name AND m1.id < m2.id) WHERE m2.id IS NULL;
In mysql 8
WITH ranked_messages AS ( SELECT m.*, ROW_NUMBER() OVER (PARTITION BY name ORDER BY id DESC) AS rn FROM messages AS m ) SELECT * FROM ranked_messages WHERE rn = 1;
fonte: https://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group-mysql