MySQL で各グループの最初の行を選択する方法は?
2023-09-18 09:04:04
質問
C#ではこのようになります。
table
.GroupBy(row => row.SomeColumn)
.Select(group => group
.OrderBy(row => row.AnotherColumn)
.First()
)
Linq-To-Sqlはこれを以下のようなT-SQLのコードに変換します。
SELECT [t3].[AnotherColumn], [t3].[SomeColumn]
FROM (
SELECT [t0].[SomeColumn]
FROM [Table] AS [t0]
GROUP BY [t0].[SomeColumn]
) AS [t1]
OUTER APPLY (
SELECT TOP (1) [t2].[AnotherColumn], [t2].[SomeColumn]
FROM [Table] AS [t2]
WHERE (([t1].[SomeColumn] IS NULL) AND ([t2].[SomeColumn] IS NULL))
OR (([t1].[SomeColumn] IS NOT NULL) AND ([t2].[SomeColumn] IS NOT NULL)
AND ([t1].[SomeColumn] = [t2].[SomeColumn]))
ORDER BY [t2].[AnotherColumn]
) AS [t3]
ORDER BY [t3].[AnotherColumn]
しかし、MySQLとは互換性がありません。
どのように解決するのですか?
と書くと
SELECT AnotherColumn
FROM Table
GROUP BY SomeColumn
;
うまくいきました。他の RDBMS では、グループ化キーに属さないカラムが何らかの集約を行わずに参照されるため、このようなステートメントは不可能だと思われます。
この "quirk" は、私が欲しいものに非常に近い振る舞いをします。そのため、私はそれを使用して、私が望む結果を得ました。
SELECT * FROM
(
SELECT * FROM `table`
ORDER BY AnotherColumn
) t1
GROUP BY SomeColumn
;
関連
-
MySQL インタビューの質問 - ハッシュインデックスを設定する方法
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] pandas GroupByを使ってグループごとの統計情報(カウント、平均値など)を取得する?
-
[解決済み] MySQL - SELECTクエリに基づくUPDATEクエリ
-
[解決済み] MySql でクエリ実行時に only_full_group_by に関連するエラーが発生する。
-
[解決済み] SQLデータベースのテーブルでn番目の行を選択する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
mysqlにおけるvarcharの日付比較とソートの実装
-
MySQL サービスとデータベース管理
-
MySql認証ベースのvsftpd仮想ユーザー
-
MySQLインストールチュートリアル(Linux版
-
MySQLの悲観的ロックと楽観的ロックの実装スキーム
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
[解決済み] 1つのSQLクエリで複数のカウントを取得する方法は?
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQLでカラムに最大値を持つ行のみを選択する [重複]。
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?