Di MySQL, pilih garisan dengan nilai maksimum mengikut kumpulan lain
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>
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>
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>
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>
Ia menggabungkan TT dan Sub -Query (alias groupttt) dengan sambungan dalaman, dan pengambilan sub -query untuk mengambil nilai maksimum setiap nilai rumah yang berbeza.
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!