を並べ替える:mysqlグループによると、私は次の表を持って、各グループ
ID NAME TIME 1 A 0 2 A 3 3 B 1
私が作成し、それ以下のクエリ使用しています:
SELECT * FROM `table` GROUP BY `NAME`
ID NAME TIME 1 A 0 3 B 1
をそして私は生成にGROUP BY
を使いたいですこのような結果(TIME列によるディスカウントソート):
ID NAME TIME 2 A 3 3 B 1
を並べ替える:mysqlグループによると、私は次の表を持って、各グループ
ID NAME TIME 1 A 0 2 A 3 3 B 1
私が作成し、それ以下のクエリ使用しています:
SELECT * FROM `table` GROUP BY `NAME`
ID NAME TIME 1 A 0 3 B 1
をそして私は生成にGROUP BY
を使いたいですこのような結果(TIME列によるディスカウントソート):
ID NAME TIME 2 A 3 3 B 1
SELECT NAME, MAX(TIME) as TIME
FROM table
GROUP BY time
ORDER BY time DESC
これは実際に私のために働いた。サブクエリベースのソリューションよりも情報が少なくてすみますが、高速です。 –
'NAME'カラムが' MAX(TIME) 'と同じ行にあるという保証はありません。上記のデータまたは小さなデータセットではうまくいくかもしれませんが、決して信頼できるものではありません。詳しくはhttp://stackoverflow.com/questions/14770671/mysql-order-by-before-group-by?noredirect=1#comment63515985_14770671 –
を参照してください。 'ORDER BY'節だけが' SELECT'節のエイリアスを受け入れることができるようです、素晴らしいトリックです。 – JasonMing
まあ、あなたはグループの後のIDと時間フィールドで見たいものを決めなければなりません。一例として、MAX(ID)とSUM(時間)を選択して、totaltime descで注文します。
これが役立ちます。
が、あまりにも私の問題を解決することができた、ここからhttp://www.cafewebmaster.com/mysql-order-sort-groupをこのソリューションを試してみてください:)
サンプル:
SELECT * FROM
(
select * from `my_table` order by timestamp desc
) as my_table_tmp
group by catid
order by nid desc
select * from (select * from table order by TIME DESC) t group by NAME
あなたの質問を読むことによって、それはあなたが望む方法を少しは不明ですソートされるフィールド。 – Starx
あなたが得ようとしている結果が100%明確ではありません。おそらくあなたが実際にやりたいことを明示的に試してみてください。 – Josh
しかし、「オーダ・バイ・オーダー」を自然な順序にしたいのですが? –