Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Baris dengan Masa Tarikh Maksimum untuk Setiap Rumah dalam MySQL?

Bagaimana untuk Memilih Baris dengan Masa Tarikh Maksimum untuk Setiap Rumah dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2025-01-25 06:18:09
asal
920 orang telah melayarinya

How to Select Rows with the Maximum Datetime for Each Home in MySQL?

Di MySQL, pilih garisan dengan nilai maksimum mengikut kumpulan lain

pernyataan soalan

Pertimbangkan jadual prestasi pemain berikut:

Matlamatnya adalah untuk mendapatkan baris setiap lajur rumah yang berbeza, dan pertimbangkan nilai maksimum setiap rumah. Di samping itu, hasilnya harus termasuk lajur lain (pemain, dll.).
<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>
Salin selepas log masuk

Contoh data

Hasil yang diharapkan

<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>
Salin selepas log masuk

penyelesaian

<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>
Salin selepas log masuk
pertanyaan berikut memberikan hasil yang diperlukan:

pertanyaan ini melaksanakan langkah -langkah berikut:

Ia memilih semua lajur dari jadual Topten (alias TT).
<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>
Salin selepas log masuk

Ia menggabungkan TT dan Sub -Query (alias groupttt) dengan sambungan dalaman, dan pengambilan sub -query untuk mengambil nilai maksimum setiap nilai rumah yang berbeza.

    Keadaan sambungan memastikan sepadan dengan nilai rumah dan dotetime dalam kedua -dua jadual.
  1. Hasilnya mengandungi semua lajur dari jadual Topten.
  2. NOTA: Saya telah menyemak format tarikh supaya ia memenuhi format standard
  3. untuk memastikan bahawa MySQL dapat dianalisis dengan betul. Ini tidak akan mengubah logik pertanyaan, tetapi hanya memastikan ketepatan data.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Masa Tarikh Maksimum untuk Setiap Rumah dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan