Menggunakan DISTINCT dan ORDER BY dalam Pernyataan SELECT Sama
Selepas melaksanakan pernyataan SELECT mengambil semula lajur Kategori dari jadual MonitoringJob dan memesan hasil oleh lajur CreationDate dalam susunan menurun, pangkalan data mungkin mengembalikan nilai pendua. Untuk menghapuskan pendua sambil mengekalkan susunan yang ditentukan, kata kunci DISTINCT boleh digunakan. Walau bagaimanapun, menggunakan DISTINCT sahaja mungkin tidak mencukupi.
Dalam contoh yang disediakan, menggunakan kata kunci DISTINCT dengan sendirinya tidak akan menyelesaikan isu kerana klausa ORDER BY bergantung pada lajur CreationDate, yang mengandungi nilai pendua. Untuk menangani perkara ini, fungsi agregat seperti MAX() boleh digabungkan dengan kata kunci DISTINCT untuk mengisih hasil berdasarkan lajur tertentu sementara masih mengecualikan pendua. Selain itu, klausa GROUP BY diperlukan untuk mencipta kategori unik berdasarkan lajur yang digunakan dalam operasi DISTINCT.
Penyelesaian yang sesuai ialah:
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
Pernyataan yang diubah suai ini akan memastikan pendua dialih keluar sambil mengekalkan susunan yang dikehendaki dengan mengisih pada lajur MAX(CreationDate) dan kemudian mengikut Kategori. Hasilnya, output yang diingini akan diperoleh, menyenaraikan kategori berbeza dalam susunan menurun berdasarkan nilai CreationDate terkini mereka.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalih Keluar Baris Pendua Semasa Mengekalkan Pesanan dalam Pernyataan SELECT SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!