Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Baris Tarikh Maks dengan Cekap dengan Nilai Semak Bukan Sifar dalam SQL?

Bagaimana untuk Memilih Baris Tarikh Maks dengan Cekap dengan Nilai Semak Bukan Sifar dalam SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-08 13:36:42205semak imbas

How to Efficiently Select Max Date Rows with Non-Zero Check Values in SQL?

Mengekstrak Baris Tarikh Maksimum dengan Jumlah Semakan Bukan Sifar dalam SQL

Contoh ini menunjukkan cara memilih kumpulan unik dengan tarikh terbaharu dan nilai semakan bukan sifar daripada set data yang mengandungi kumpulan, tarikh dan nilai kewangan (tunai dan cek).

Percubaan awal menggunakan pertanyaan ini terbukti tidak mencukupi:

<code class="language-sql">SELECT group, MAX(date), checks
FROM table
WHERE checks > 0
GROUP BY group
ORDER BY group DESC</code>

Pertanyaan ini mengembalikan semua tarikh dan nilai semak untuk setiap kumpulan, bukan hanya data dari baris dengan tarikh maksimum.

Penyelesaian melibatkan pendekatan dua langkah:

Pertama, kami mengenal pasti tarikh maksimum untuk setiap kumpulan dengan nilai semakan bukan sifar:

<code class="language-sql">SELECT group, MAX(date) AS max_date
FROM table
WHERE checks > 0
GROUP BY group</code>

Kemudian, kami menyertai set keputusan ini kembali ke jadual asal untuk mendapatkan semula checks (dan lajur lain yang berkaitan) yang sepadan untuk baris tarikh maksimum tersebut:

<code class="language-sql">SELECT t.group, a.max_date, t.checks
FROM table t
INNER JOIN (
    SELECT group, MAX(date) AS max_date
    FROM table
    WHERE checks > 0
    GROUP BY group
) a ON a.group = t.group AND a.max_date = t.date;</code>

Gabungan dalam ini memastikan hanya baris yang sepadan dengan kedua-dua tarikh maksimum dan kriteria semakan bukan sifar dimasukkan dalam output akhir.

Amalan Terbaik: Menggunakan perkataan deskriptif dan tidak dikhaskan untuk nama lajur (cth., group_id bukannya group) meningkatkan kebolehbacaan kod dan mengurangkan risiko ralat.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris Tarikh Maks dengan Cekap dengan Nilai Semak Bukan Sifar dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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