問題陳述
考慮以下玩家表現表:
<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>
目標是檢索每個不同的home列的行,同時考慮每個home的datetime列的最大值。此外,結果中應包含其他欄位(player等)。
範例資料
<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>
預期結果
<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>
解
以下查詢提供所需結果:
<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>
此查詢執行下列步驟:
注意:我修正了日期格式,使其符合標準的YYYY-MM-DD
格式,確保MySQL能夠正確解析。 這不會改變查詢的邏輯,只會保證資料的正確性。
以上是如何使用MySQL中每個家庭的最大日期時間選擇行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!