5
假設我有一個MySQL表:如何爲每個成員選擇最近的輸入?
╔══════╦═════╦═════════╦═════════╗ ║ 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 ║ ╚══════╩═════╩═════════╩═════════╝
時間是一個UNIX時間戳。 mid是會員ID。 field_1由會員提供。 field_2會自動填充。
我希望爲所有成員選擇具有最近非零字段_1的行。因此,查詢將導致:
╔══════╦═════╦═════════╦═════════╗ ║ time ║ mid ║ field_1 ║ field_2 ║ ╠══════╬═════╬═════════╬═════════╣ ║ 100 ║ 1 ║ 32 ║ 54 ║ ║ 200 ║ 3 ║ 4 ║ 59 ║ ║ 200 ║ 4 ║ 45 ║ 45 ║ ╚══════╩═════╩═════════╩═════════╝
我想出的唯一辦法似乎並不很優雅:
SELECT * FROM ( SELECT * FROM t1 WHERE field_1 > 0 ORDER BY time DESC ) AS a GROUP BY mid
有沒有更好的辦法?
嘗試瞭解[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