Pesanan MySQL sebelum Kumpulan mengikut
Apabila mendapatkan semula data daripada pangkalan data menggunakan MySQL, selalunya wajar untuk mengisih keputusan dalam susunan tertentu . Walau bagaimanapun, apabila menggunakan klausa GROUP BY untuk mengumpulkan data, keputusan biasanya dipesan selepas ia dikumpulkan, yang mungkin tidak menghasilkan hasil yang diingini.
Dalam contoh yang disediakan, pertanyaan bertujuan untuk mendapatkan semula siaran terkini untuk setiap pengarang dan kumpulan hasil, tetapi klausa GROUP BY menyebabkan siaran dipesan selepas dikumpulkan, menghasilkan tidak betul keputusan.
Untuk menyelesaikan isu ini, pendekatan alternatif ialah menggunakan subkueri untuk menentukan tarikh siaran terkini bagi setiap pengarang sebelum melaksanakan operasi kumpulan. Ini boleh dicapai menggunakan pertanyaan yang diubah suai berikut:
SELECT wp_posts.* FROM wp_posts JOIN ( SELECT g.post_author, MAX(g.post_date) AS post_date FROM wp_posts AS g WHERE g.post_status = 'publish' AND g.post_type = 'post' GROUP BY g.post_author ) AS t ON wp_posts.post_author = t.post_author AND wp_posts.post_date = t.post_date ORDER BY wp_posts.post_date DESC;
Pertanyaan ini mula-mula menggunakan subkueri untuk mengira tarikh siaran terkini bagi setiap pengarang dan menyimpannya dalam jadual sementara t. Ia kemudian bergabung dengan wp_posts dengan t untuk memilih baris yang sepadan dengan tarikh siaran terkini dan mengumpulkan hasil oleh pengarang. Akhir sekali, keputusan disusun mengikut tertib menurun mengikut tarikh siaran untuk mendapatkan catatan terkini bagi setiap pengarang.
Dengan menggunakan pendekatan ini, anda boleh memastikan bahawa siaran dipesan sebelum ia dikumpulkan, memberikan hasil yang diingini tanpa menjejaskan integriti operasi kumpulan.
Atas ialah kandungan terperinci Bagaimana untuk Memesan Data Sebelum Pengumpulan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!