Si supponga Ho una tabella di MySQL:Come posso selezionare l'input più recente per ciascun membro?
╔══════╦═════╦═════════╦═════════╗ ║ time ║ mid ║ field_1 ║ field_2 ║ ╠══════╬═════╬═════════╬═════════╣ ║ 100 ║ 1 ║ 32 ║ 54 ║ ║ 100 ║ 2 ║ 0 ║ 34 ║ ║ 100 ║ 3 ║ 44 ║ 99 ║ ║ 200 ║ 1 ║ 0 ║ 45 ║ ║ 200 ║ 2 ║ 0 ║ 45 ║ ║ 200 ║ 3 ║ 4 ║ 59 ║ ║ 200 ║ 4 ║ 45 ║ 45 ║ ╚══════╩═════╩═════════╩═════════╝
il tempo è un timestamp UNIX. mid è l'id membro. field_1 è fornito dal membro. field_2 viene compilato automaticamente.
Desidero selezionare la riga con il campo non zero più recente_1 per tutti i membri. Quindi la domanda si tradurrebbe in:
╔══════╦═════╦═════════╦═════════╗ ║ time ║ mid ║ field_1 ║ field_2 ║ ╠══════╬═════╬═════════╬═════════╣ ║ 100 ║ 1 ║ 32 ║ 54 ║ ║ 200 ║ 3 ║ 4 ║ 59 ║ ║ 200 ║ 4 ║ 45 ║ 45 ║ ╚══════╩═════╩═════════╩═════════╝
L'unica soluzione mi è venuta non sembra molto elegante:
SELECT * FROM ( SELECT * FROM t1 WHERE field_1 > 0 ORDER BY time DESC ) AS a GROUP BY mid
C'è un modo migliore?
Cercate di conoscere [MySQL JOIN] (http://dev.mysql.com/doc/refman/5.0/en/join.html) –
http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group/ – newtover