Tidak, ini baik-baik saja. Ini hanyalah salah satu kasus yang jarang terjadi ketika Anda ingin menggunakan DISTINCT kata kunci untuk menghapus duplikat.
Dalam hal ini hal ini dibenarkan oleh fakta bahwa logika kueri benar, meskipun mengembalikan lebih dari satu baris. Sering kali orang dapat melihat penggunaan DISTINCT padahal logika kuerinya salah.
Catatan samping:
- filter apa pun pada referensi tabel yang Anda gunakan di
WHEREklausa selainIS NULL/IS NOT NULLakan membuatLEFT JOINpada referensi tabel yang sama ini beralih keINNER JOIN, seperti untuk perilaku hasil akhir. (lihat ini:https://stackoverflow.com/a/15483895/1291428 ) -
Anda tidak boleh menggunakan
GROUP BYuntuk mensimulasikan efekDISTINCT, karena 2 alasan:1/ Ini bukan tujuannya. Salah satu efek dari
GROUP BYadalah untuk menghilangkan duplikat, tetapi tujuan utamanya adalah untuk mengelompokkan baris menurut serangkaian kriteria tertentu, untuk menerapkan beberapa perhitungan/operasi analitik pada baris tersebut.2/
GROUP BYjugaORDER BYhasil (dalam mysql), yang belum tentu seperti yang Anda inginkan dan dalam hal ini memperlambat eksekusi. Tolong, pastikan penggunaan yang tepat dari apa yang disediakan mesin, itu selalu lebih baik dari sudut pandang kompatibilitas ke depan. (mengantisipasi bahwa apa yang Anda sertakan seperti yang diberikan sebenarnya tidak)
salam.