公開2015.01.21 更新2017.12.03 仕事・技術 MySQLのgroup byで少しハマったのでメモしておきます。 結論からいうと、この問題を解決するには以下のSQL文でいけます。 SELECT * FROM table_name WHERE created IN (SELECT MAX(created) FROM table_name GROUP BY table_id) MySQLで普通にgroup byして結果を取得すると、そのままではレコードの作成が古いものが優先されて取得されてしまいます。 それならば!ということでorder byして取得しようとしますが、group byはorder byより先に実行されてしまうらしく、order byしてもgroup byの結果が並び替えられるだけでうまくいきません。 なのでサブクエリを使って、group byで上記の例でいうとこ