私はGROUP BYの質問に悩まされています(少なくとも私にとっては最も難しいものです)。GROUP BY - 前後のグループ分けを並べ替える
私がやりたいことは、別の列でグループ化された最新の変更されたレコードを取得することです。私が見ている問題は、グループ化は、(グループ内で)ORDER BYを無視して見つけた唯一の最初のレコードを返すことです(最終結果を返すときを除く)。
ここに私のコードの簡略版があります。
戻りますSELECT events.id, events.name, events.type, events.modified_time
FROM events
GROUP BY events.type
ORDER BY event.modified_time DESC
:
1 | Event One | Birthday | Jan 1, 2012
2 | Event Two | Graduation | Jan 1, 2012
実際に遅い修正時間と第三の記録がある場合:
3 | Event Three | Birthday | Jan 2, 2012
は私がのHAVING句を使用して試してみましたMAX(modified_time)でも正しい結果を返しません。たぶん私はちょうど知っている誰かとこれ以上議論する必要がありますが、質問が十分な意味がある場合は、私はおそらく簡単な答えが必要なことを言うことができる。
ボナス質問:
サブクエリなしでこれを行うことはできますか?
'events.modified_time'をGROUP BY句に追加できませんか? –
@Lievenそれで、2つの最新のものが本当に必要なときに私は3つのレコードを得るでしょう。 – Matthew
ORDER BYはGROUP BYには影響しませんが、最終ソートにのみ影響します。 –