SQL's GROUP BY and DISTINCT: Bilakah Mereka Menghasilkan Hasil Yang Sama?
Walaupun kedua-dua GROUP BY
dan DISTINCT
boleh menghasilkan hasil yang sama untuk satu lajur dalam SQL, mekanisme asas dan penggunaan yang dimaksudkan berbeza. Artikel ini meneroka persamaan dan perbezaan penting mereka.
GROUP BY
biasanya berfungsi dengan fungsi agregat (seperti SUM
, AVG
, COUNT
) untuk mengumpulkan dan meringkaskan data. Walau bagaimanapun, apabila digunakan tanpa agregat pada satu lajur, ia berkesan bertindak seperti DISTINCT
, hanya mengembalikan nilai unik.
Menurut MusiGenesis, SQL Server mengoptimumkan GROUP BY
klausa tanpa agregat, menganggapnya sebagai DISTINCT
dan menjana pelan pelaksanaan yang setara dari segi fungsi. Ini membawa kepada prestasi yang sama dalam kes khusus ini.
Walau bagaimanapun, Hank menyerlahkan perkara penting: menggunakan GROUP BY
tanpa pengagregatan boleh mengelirukan. Tujuan utamanya ialah pengagregatan data, dan menggunakannya untuk mencari nilai unik boleh menyebabkan kekeliruan dan potensi masalah dalam pertanyaan yang lebih kompleks. Untuk mendapatkan semula nilai yang berbeza, secara eksplisit menggunakan DISTINCT
ialah amalan terbaik – menggunakan alat yang betul untuk tugas itu menghalang tingkah laku yang tidak dijangka dan meningkatkan kebolehbacaan kod.
Atas ialah kandungan terperinci GROUP BY vs. DISTINCT: Bilakah Mereka Benar-benar Sama dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!