Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menukar SELECT DISTINCT ON PostgreSQL ON Queries kepada MySQL?

Bagaimana untuk Menukar SELECT DISTINCT ON PostgreSQL ON Queries kepada MySQL?

Barbara Streisand
Lepaskan: 2024-11-13 15:26:02
asal
403 orang telah melayarinya

How to Convert PostgreSQL's SELECT DISTINCT ON Queries to MySQL?

Menukar DISTINCT ON Queries daripada PostgreSQL kepada MySQL

Dalam peralihan daripada PostgreSQL kepada MySQL, pengguna mungkin menghadapi perbezaan dalam sintaks untuk menghapuskan baris pendua berdasarkan nilai lajur tertentu. PostgreSQL menggunakan pernyataan SELECT DISTINCT ON, manakala MySQL menggunakan sambungan klausa GROUP BY.

PILIH DISTINCT ON PostgreSQL

PILIH DISTINCT ON (col1, col2, col3) dalam PostgreSQL mengekalkan baris kelayakan pertama untuk setiap gabungan unik lajur yang ditentukan. Sebagai contoh, pertimbangkan jadual berikut:

col1 col2 col3 col4 col5
1 2 3 777 888
1 2 3 888 999
3 3 3 555 555

Pertanyaan akan mengeluarkan:

col4 col5
777 888
555 555

Pelanjutan MySQL ke GROUP BY

Pelanjutan MySQL membenarkan pemilihan lajur tidak teragregat walaupun ia tidak disertakan dalam klausa GROUP BY. Walau bagaimanapun, pelayan mempunyai kebebasan untuk memilih nilai arbitrari daripada lajur ini untuk setiap kumpulan.

Pertanyaan MySQL Setara

Pertanyaan MySQL yang setara untuk contoh PostgreSQL ialah:

SELECT col4, col5
FROM tablename
GROUP BY col1, col2, col3;
Salin selepas log masuk

Kedua-dua PostgreSQL dan MySQL akan mengembalikan satu baris untuk setiap satu (col1, gabungan col2, col3), tetapi baris khusus yang dikembalikan mungkin berbeza kerana kekurangan pesanan yang jelas.

Penyelesaian untuk Pertanyaan Tertib

Untuk meniru pesanan PostgreSQL DISTINCT ON tingkah laku, pertanyaan yang lebih kompleks dalam MySQL ialah diperlukan:

SELECT t1.col4, t1.col5
FROM tablename t1
INNER JOIN (
    SELECT col1, col2, col3, MIN(col4) AS m_col4
    FROM tablename
    GROUP BY col1, col2, col3
) s
ON t1.col1 = s.col1
AND t1.col2 = s.col2
AND t1.col3 = s.col3
AND t1.col4 = s.m_col4
GROUP BY
    t1.col1, t1.col2, t1.col3, t1.col4;
Salin selepas log masuk

Kesimpulan

Walaupun MySQL tidak mempunyai rakan sejawat yang tepat untuk SELECT DISTINCT ON Postgresql, penyelesaian yang melibatkan sambungan GROUP BY boleh menyediakan kefungsian yang serupa. Kerumitan penyelesaian mungkin berbeza-beza bergantung pada keperluan pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Menukar SELECT DISTINCT ON PostgreSQL ON Queries kepada 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