mysql で ORDER BY date and time BEFORE GROUP BY name を使用する。
2023-12-11 15:57:29
質問
私はこのようなテーブルを持っています。
name date time
tom | 2011-07-04 | 01:09:52
tom | 2011-07-04 | 01:09:52
mad | 2011-07-04 | 02:10:53
mad | 2009-06-03 | 00:01:01
古い名前から順に表示したい。
SELECT *
ORDER BY date ASC, time ASC
GROUP BY name
(->は効きません!)
これで、最初のmad(日付が古い)が表示され、次にtomが表示されるはずです。
しかし
GROUP BY name ORDER BY date ASC, time ASC
では、ソートする前にグループ化してしまうので、 新しい方の mad を先に与えてしまいます。
GROUP BYはORDER BYの前になければならないので、問題はグループ化する前に日付と時刻でソートすることができないことです!
どのように解決するには?
別の方法です。
SELECT *
FROM (
SELECT * FROM table_name
ORDER BY date ASC, time ASC
) AS sub
GROUP BY name
GROUP BY は、最初にヒットしたマッチする結果をグループ化します。その最初のマッチングがたまたま望むものであれば、すべてが期待通りに動作するはずです。
私はこの方法を好みます。サブクエリが論理的に意味をなすので、他の条件をちりばめるよりもいいのです。
関連
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
[解決済み] MySQLクエリ GROUP BY 日/月/年
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQL order by before group by
-
[解決済み】MySQLのテーブル、インデックス、データを複製する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SQL集計、グループ化、ソート
-
MySQLによる既存テーブルのパーティショニングの実装
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
Mysqlのソート機能の詳細
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
mysql5.7のインストールと、無料・長期利用を目的としたNavicateの導入プロセスについて
-
SQL Server のトランザクションは、try キャッチに記述しなければ、中間ステートメントがエラーを報告してもコミットされます。
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?