Rumah >pangkalan data >tutorial mysql >Bagaimana untuk MEMILIH Baris dengan Masa Tarikh MAX untuk Setiap Rumah dalam MySQL?
mysql: Memilih baris dengan datetime maksimum untuk setiap kumpulan
Panduan ini menunjukkan bagaimana untuk mendapatkan baris dengan cekap yang mengandungi nilai datetime maksimum untuk setiap kumpulan yang berbeza dalam jadual MySQL. Ini adalah cabaran SQL biasa, sering melibatkan subqueries atau fungsi tingkap.
senario:
Bayangkan Jadual (
TopTen
<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>, rekod dengan entri paling terkini (
), termasuk maklumat home
dan datetime
dari rekod terbaru itu. player
resource
mudah
dan tidak akan berfungsi secara langsung, sebagai GROUP BY
agregat data, kehilangan lajur yang tidak diagihkan seperti MAX()
. Percubaan menggunakan subqueries untuk mencari datetime maksimum untuk setiap rumah dan kemudian bergabung kembali ke meja asal sering membawa kepada hasil yang salah atau tidak lengkap. GROUP BY
player
Penyelesaian yang paling berkesan memanfaatkan diri dengan subquery:
pertanyaan ini berfungsi dengan:
<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>
groupedtt
, mengumpulkan hasilnya dengan . datetime
home
home
Sertai: TopTen
dan maksimum tt
dimasukkan ke dalam hasil akhir. JOIN
home
datetime
Kaedah ini memastikan bahawa semua lajur dari jadual asal (termasuk untuk setiap player
. Ini mengelakkan kehilangan data dan memberikan maklumat lengkap yang diperlukan. resource
Atas ialah kandungan terperinci Bagaimana untuk MEMILIH Baris dengan Masa Tarikh MAX untuk Setiap Rumah dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!