Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengalih Keluar Baris Pendua Semasa Mengekalkan Pesanan dalam Pernyataan SELECT SQL?

Bagaimanakah Saya Boleh Mengalih Keluar Baris Pendua Semasa Mengekalkan Pesanan dalam Pernyataan SELECT SQL?

DDD
DDDasal
2025-01-07 09:21:42634semak imbas

How Can I Remove Duplicate Rows While Maintaining Order in a SQL SELECT Statement?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn