Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memesan mengikut Tarikh dan Masa Sebelum Menghimpunkan mengikut Nama dalam MySQL?

Bagaimana untuk Memesan mengikut Tarikh dan Masa Sebelum Menghimpunkan mengikut Nama dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 22:59:29449semak imbas

How to Order by Date and Time Before Grouping by Name in MySQL?

PESANAN MENGIKUT Tarikh dan Masa Sebelum GROUP BY Name dalam MySQL

Dalam MySQL, klausa ORDER BY digunakan sebelum klausa GROUP BY. Walau bagaimanapun, dalam senario tertentu, pengguna perlu mengisih data mengikut medan tarikh dan masa sebelum melakukan GROUP BY pada lajur nama.

Pertimbangkan jadual berikut:

name date time
tom 2011-07-04 01:09:52
tom 2011-07-04 01:09:52
mad 2011-07-04 02:10:53
mad 2009-06-03 00:01:01

Matlamatnya adalah untuk dapatkan semula nama tertua dahulu. Pertanyaan berikut gagal:

SELECT *
ORDER BY date ASC, time ASC
GROUP BY name

Ini kerana GROUP BY digunakan sebelum ORDER BY, menyebabkan pengumpulan rekod dengan nama yang sama sebelum mengisih. Akibatnya, pesanan yang diharapkan tidak tercapai.

Penyelesaian:

Untuk menyelesaikan isu ini, seseorang boleh menggunakan pendekatan berikut:

SELECT *
FROM (
    SELECT * FROM table_name
    ORDER BY date ASC, time ASC
) AS sub
GROUP BY name

Dalam pertanyaan ini:

  • Subkueri mencipta set hasil perantaraan dengan menyusun baris terlebih dahulu mengikut tarikh dan kemudian mengikut masa menaik.
  • Pertanyaan luar memilih semua lajur daripada subkueri dan melakukan operasi GROUP BY pada lajur nama.

Dengan menggunakan kaedah ini, GROUP BY digunakan pada set hasil tertib, memastikan nama tertua diambil dahulu, tanpa mengira tarikh dan masa medan.

Atas ialah kandungan terperinci Bagaimana untuk Memesan 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