Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Isih mengikut Tarikh dan Masa sebelum Menghimpunkan mengikut Nama dalam MySQL?

Bagaimana untuk Isih mengikut Tarikh dan Masa sebelum Menghimpunkan mengikut Nama dalam MySQL?

DDD
DDDasal
2024-10-30 09:23:27210semak imbas

How to Sort by Date and Time before Grouping by Name in MySQL?

Mengurus Isih dan Pengelompokan dalam MySQL: Menggabungkan ORDER BY dan GROUP BY untuk Keputusan Tertentu

Dalam MySQL, mencapai pengisihan dan pengelompokan yang diingini data boleh mencabar apabila susunan operasi bercanggah. Soalan ini membentangkan senario di mana matlamatnya adalah untuk mengisih data mengikut tarikh dan masa sebelum mengumpulkannya mengikut nama.

Seperti yang diterangkan oleh pengguna, pendekatan standard menggunakan ORDER BY date ASC, masa ASC diikuti dengan GROUP BY nama gagal kerana GROUP BY mesti mendahului ORDER BY dalam pertanyaan. Untuk menyelesaikan konflik ini, jawapannya menyediakan dua kaedah alternatif:

Kaedah 1: Subquery

Kaedah pertama melibatkan penggunaan subquery untuk mencapai susunan yang diingini sebelum mengumpulkan:

<code class="sql">SELECT * 
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC 
) AS sub
GROUP BY name</code>

Subkueri ini mencipta jadual sementara, sub, yang mengandungi data yang diisih mengikut tarikh dan masa. Pertanyaan utama kemudian mengumpulkan jadual sementara ini mengikut nama, mencapai hasil yang diingini.

Kaedah 2: Menggunakan Ungkapan Jadual Biasa (CTE)

Kaedah lain, biasanya digunakan dengan MySQL versi 8.0 dan ke atas, adalah untuk mencipta Common Table Expression (CTE) untuk melaksanakan pengisihan dan pengumpulan:

<code class="sql">WITH sorted_data AS (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC 
)
SELECT * 
FROM sorted_data
GROUP BY name</code>

CTE, sorted_data, mencapai hasil yang sama seperti subquery dengan mencipta jadual sementara dengan data yang diisih, yang kemudiannya digunakan dalam pertanyaan utama untuk mengumpulkan.

Atas ialah kandungan terperinci Bagaimana untuk Isih mengikut Tarikh dan Masa sebelum Menghimpunkan mengikut Nama dalam MySQL?. 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