首頁 > 資料庫 > mysql教程 > 如何使用MySQL中每個家庭的最大日期時間選擇行?

如何使用MySQL中每個家庭的最大日期時間選擇行?

Mary-Kate Olsen
發布: 2025-01-25 06:18:09
原創
914 人瀏覽過

How to Select Rows with the Maximum Datetime for Each Home in 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>
登入後複製

目標是檢索每個不同的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>
登入後複製

此查詢執行下列步驟:

  1. 它從topten表(別名為tt)中選擇所有列。
  2. 它使用內部聯結將tt與子查詢(別名為groupedtt)組合,該子查詢檢索每個不同的home值的datetime最大值。
  3. 聯結條件確保兩個表中的home和datetime值相符。
  4. 結果包含來自topten表的所有列,按home分組並按每個home的datetime最大值過濾。

注意:我修正了日期格式,使其符合標準的YYYY-MM-DD格式,確保MySQL能夠正確解析。 這不會改變查詢的邏輯,只會保證資料的正確性。

以上是如何使用MySQL中每個家庭的最大日期時間選擇行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板