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

DDD
Lepaskan: 2024-10-30 09:23:27
asal
143 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!