Subquery Nilai Maksimum dalam SQL
Dalam pertanyaan ini, anda berusaha untuk mendapatkan semula nilai yang sepadan untuk lajur berdasarkan nilai maksimum lajur lain . Walaupun pendekatan asal anda menggunakan pernyataan GROUP BY, pendekatan ini hanya mengambil ID video maksimum dengan pasti tetapi bukan data yang berkaitan daripada lajur lain.
Untuk menangani perkara ini, pertimbangkan untuk menggunakan subkueri yang mengenal pasti ID video maksimum yang berbeza bagi setiap kategori . Pertanyaan yang diubah suai di bawah mematuhi pendekatan ini:
SELECT * FROM videos WHERE video_id IN ( SELECT DISTINCT MAX(video_id) FROM videos GROUP BY video_category ) ORDER BY video_category ASC
Dalam pertanyaan ini, subkueri digunakan untuk mengasingkan set ID video maksimum. Jadual kemudian ditapis menggunakan set ini untuk mendapatkan semula semua lajur untuk ID video maksimum yang sepadan. Dengan memanfaatkan operator IN dan menggabungkan hasil, pertanyaan ini mendapatkan nilai yang dikehendaki dengan cekap.
Sebagai alternatif, anda boleh menggunakan operasi gabungan untuk mencapai hasil yang sama, seperti ditunjukkan di bawah:
SELECT s.video_id ,s.video_category ,s.video_url ,s.video_date ,s.video_title ,s.short_description FROM videos s JOIN (SELECT MAX(video_id) AS id FROM videos GROUP BY video_category) max ON s.video_id = max.id
Pendekatan ini menggunakan gabungan untuk memadankan baris ID video maksimum dengan baris yang sepadan daripada jadual video, mendapatkan set lengkap lajur untuk setiap ID video maksimum. Kedua-dua penyelesaian menangani isu ini dengan berkesan dengan menangkap nilai yang dikaitkan dengan ID video maksimum dalam setiap kategori.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Maksimum dan Lajur Berkaitan dalam Subqueries SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!