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:
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!