Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memesan Keputusan Sebelum Pengumpulan dalam MySQL?

Bagaimana untuk Memesan Keputusan Sebelum Pengumpulan dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-11 18:04:03931semak imbas

How to Order Results Before Grouping in MySQL?

Pesanan MySQL sebelum Kumpulan Oleh

Dalam MySQL, melaksanakan klausa GROUP BY biasanya memerintahkan keputusan selepas kumpulan telah dibentuk. Walau bagaimanapun, terdapat senario di mana anda ingin memesan keputusan sebelum mengumpulkan.

Pertimbangkan pertanyaan berikut:

SELECT wp_posts.*
FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
ORDER BY wp_posts.post_date DESC

Pertanyaan ini bertujuan untuk mencari siaran terkini untuk setiap pengarang dan kemudian mengumpulkan keputusan. Walau bagaimanapun, masalahnya ialah ia menyusun keputusan selepas mengumpulkan, bukan sebelum ini.

Penyelesaian

Untuk memesan keputusan sebelum mengumpulkan, anda boleh menggunakan pendekatan berikut:

SELECT wp_posts.*
FROM wp_posts
WHERE wp_posts.post_status='publish'
AND wp_posts.post_type='post'
GROUP BY wp_posts.post_author
HAVING wp_posts.post_date = MAX(wp_posts.post_date)
ORDER BY wp_posts.post_date DESC

Klausa HAVING memastikan bahawa hanya catatan terkini untuk setiap pengarang dipilih sebelum dikumpulkan.

Penyelesaian Alternatif

Dalam kes di mana HAVING klausa tidak boleh dilaksanakan, seperti dalam Postgres atau SQL Server, anda boleh menggunakan penyelesaian alternatif 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

Pertanyaan ini menggunakan subkueri untuk mencari tarikh siaran maksimum bagi setiap pengarang dan kemudian menyertainya dengan jadual asal untuk mendapatkan semula rekod siaran sebenar.

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