ホームページ >データベース >mysql チュートリアル >mysqlの各家の最大データタイムで行を選択する方法は?
mysqlで、別のグループに従って最大値を持つ行を選択します
次のプレーヤーパフォーマンステーブルを検討してください:
目標は、それぞれの異なるホームコラムの行を取得し、各家の最大値を考慮することです。さらに、結果には他の列(プレーヤーなど)を含める必要があります。
<code class="language-sql">CREATE TABLE TopTen ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, home INT UNSIGNED NOT NULL, `datetime` DATETIME NOT NULL, player VARCHAR(6) NOT NULL, resource INT NOT NULL );</code>例データの例
予想される結果
<code class="language-sql">INSERT INTO TopTen (id, home, `datetime`, player, resource) VALUES (1, 10, '2009-04-03', 'john', 399), (2, 11, '2009-04-03', 'juliet', 244), (5, 12, '2009-04-03', 'borat', 555), (3, 10, '2009-03-03', 'john', 300), (4, 11, '2009-03-03', 'juliet', 200), (6, 12, '2009-03-03', 'borat', 500), (7, 13, '2008-12-24', 'borat', 600), (8, 13, '2009-01-01', 'borat', 700) ;</code>
solution
次のクエリは、必要な結果を提供します:<code>id home datetime player resource 1 10 2009-04-03 john 399 2 11 2009-04-03 juliet 244 5 12 2009-04-03 borat 555 8 13 2009-01-01 borat 700</code>
このクエリは、次の手順を実行します:
Toptenテーブル(エイリアスTT)からすべての列を選択します。TTとサブクエリ(Alias Groupttt)と内部接続と、各異なるホーム値の最大値を取得するサブクエリ検索を組み合わせます。
<code class="language-sql">SELECT tt.* FROM topten tt INNER JOIN (SELECT home, MAX(datetime) AS MaxDateTime FROM topten GROUP BY home) groupedtt ON tt.home = groupedtt.home AND tt.datetime = groupedtt.MaxDateTime;</code>
接続条件により、2つのテーブルのホーム値とドテタイム値を確実に一致させます。
以上がmysqlの各家の最大データタイムで行を選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。