Bagaimana untuk Memesan Keputusan Sebelum Pengumpulan dalam MySQL?

Linda Hamilton
Lepaskan: 2024-11-11 18:04:03
asal
878 orang telah melayarinya

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

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

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

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan