良い一日。
注: MySQL 5.7.0 以降では、デフォルトで ONLY_FULL_GROUP_BY sql_mode に含まれています。
次のクエリはそうではありません。
SELECT
`ordered_list`.*
FROM
(
SELECT
*
FROM
`test`
ORDER BY
`test`.`datetime` DESC
) `ordered_list`
GROUP BY
`ordered_list`.`parent_id`
エラー メッセージ Error: Expression # 1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ordered_list.id' which is not functionlydependent to columns in GROUP BY clause; これは、予想される sql_mode = only_full_group_by と互換性がありません。
このオプションを無効にすると、次の結果が得られます。
Id parent_id datetime field1 field2
1 1 2016-04-12 13:01:15 value 1-1-1 value 1-1-2
4 2 2016-04-26 13:08:31 value 2-4-1 value 2-4-2
5.7.x より前の MySQL バージョンでは、望ましい結果が返されます。
Id parent_id datetime field1 field2
4 2 2016-04-26 13:08:31 value 2-4-1 value 2-4-2
2 1 2016-04-19 13:02:03 value 1-2-1 value 1-2-2
ソースデータ:
Id parent_id datetime field1 field2
1 1 2016-04-12 13:01:15 value 1-1-1 value 1-1-2
2 1 2016-04-19 13:02:03 value 1-2-1 value 1-2-2
3 1 2016-04-05 13:07:54 value 1-3-1 value 1-3-2
4 2 2016-04-26 13:08:31 value 2-4-1 value 2-4-2
5 2 2016-04-19 13:09:24 value 2-5-1 value 2-5-2
6 2 2016-04-20 13:12:46 value 2-6-1 value 2-6-2
各グループの最大日付に該当するデータを行を選択するクエリを見てください。