非集計をGROUPBYクエリに含めることを許可するMySQLの緩いルールの餌食になりました。確かに、あなたはMINまたはMAXで作業しており、1つのみを使用しています 一度に、ただしこのクエリを検討してください:
SELECT
CONCAT(work_type, work_id) AS condition_id,
status,
MIN(created_timestamp) as earliest,
MAX(created_timestamp) as latest
FROM conditions
GROUP BY condition_id
次に、どの行について考えます。 ステータス列はから取得する必要があります。集計(GROUP BY内の列)と非集計列の間に相関関係を置くのはばかげています。
代わりに、次のようにクエリを記述してください
SELECT X.condition_id, C.status, X.earliest
FROM (
SELECT
CONCAT(work_type, work_id) AS condition_id,
status,
MIN(created_timestamp) as earliest
FROM conditions
GROUP BY condition_id
) X JOIN conditions C
on CONCAT(c.work_type, c.work_id) = X.condition_id
and c.created_timestamp = X.earliest
ただし、同じcreated_timestampを持つ2つのレコードがある場合は、さらに注意が必要です
SELECT X.condition_id, Max(C.status) status, X.earliest
FROM (
SELECT
CONCAT(work_type, work_id) AS condition_id,
status,
MIN(created_timestamp) as earliest
FROM conditions
GROUP BY condition_id
) X JOIN conditions C
on CONCAT(c.work_type, c.work_id) = X.condition_id
and c.created_timestamp = X.earliest
GROUP BY X.condition_id, X.earliest