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
WHERE
klausa selainIS NULL/IS NOT NULL
akan membuatLEFT JOIN
pada 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 BY
untuk mensimulasikan efekDISTINCT
, karena 2 alasan:1/ Ini bukan tujuannya. Salah satu efek dari
GROUP BY
adalah 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 BY
jugaORDER BY
hasil (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.