2

次の構造のテーブルがあります...

--------------------------------
id | state_abbr | poll_date
1       GA         2010-01-01
2       GA         2011-01-01
3       NC         2011-02-01
-------------------------------

各州の最新の poll_date を返すクエリが必要です。group by を使用していますが、その中で注文して最新の poll_date に戻す方法がわかりません。各状態の最初の poll_date を戻すだけです。したがって、GA は 2010-01-01 になり、NC は 2011-02-01 になり、order by はこれらの値で注文されます。これを回避するにはどうすればよいですか??

4

2 に答える 2

0

Mysql カンフーで救出:

select * from
(select * from polls order by state_abr, poll_date desc) x
group by state_abr

見た目と同じくらい精神的であり、他のデータベースでは有効な SQL でさえありませんが、これは機能します。

mysql には特別な機能があり、それによって非グループ化カラムを集約group by せずに、指定されたグループで検出された最初の行を返します。

各グループから必要な行が最初になるように行を並べ替える内部クエリから選択する場合は、関連する列に group by を追加するだけです。

于 2012-05-31T01:34:07.250 に答える