Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan DISTINCT dan ORDER BY untuk Keputusan Unik, Tertib dalam SQL?
Cara Menggunakan DISTINCT dan ORDER BY dalam Pernyataan PILIHAN Yang Sama
Pertanyaan yang dilaksanakan selalunya mengembalikan data pendua dan memesan data tersebut menggunakan ORDER BY sahaja mungkin tidak mencukupi untuk mengalih keluar pendua ini. Dengan menggabungkan DISTINCT dan ORDER BY dalam satu pernyataan SELECT, bagaimanapun, pembangun boleh menghapuskan pendua dengan cekap sambil mengekalkan susunan yang diingini.
Untuk menangani perkara ini, klausa ORDER BY mesti memasukkan lajur yang digunakan dalam klausa SELECT. Apabila DISTINCT digunakan, ia mengumpulkan hasil berdasarkan lajur yang ditentukan, dengan berkesan mengalih keluar pendua. Walau bagaimanapun, jika klausa ORDER BY merujuk kepada lajur yang tidak disertakan dalam DISTINCT, pesanan akan tersalah mengumpulkan semua baris dengan nilai yang sama dalam lajur PILIH, yang membawa kepada hasil pendua.
Penyelesaian:
Untuk menyelesaikan isu ini, pertanyaan harus menggunakan fungsi agregat, seperti MAX(), untuk mengisih pada lajur yang dikehendaki (CreationDate dalam kes ini). Selain itu, klausa GROUP BY ditambah untuk mengumpulkan hasil mengikut lajur DISTINCT (Kategori). Gabungan ini memastikan pendua dialih keluar sambil mengekalkan susunan keputusan. Pertanyaan yang diubah suai adalah seperti berikut:
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
Pertanyaan yang disemak ini akan mengeluarkan hasil yang diingini, menghapuskan pendua daripada Kategori dan menyusunnya mengikut CreationDate dalam susunan menurun, diikuti oleh Kategori.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan DISTINCT dan ORDER BY untuk Keputusan Unik, Tertib dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!