Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan ANY_VALUE() Fungsi Setara dalam MySQL 5.6?
Fungsi ANY_VALUE dan Keserasian MySQL
MySQL versi 5.6 tidak mempunyai fungsi ANY_VALUE, yang diperkenalkan dalam MySQL 5.7. Ini memberikan cabaran kepada pembangun yang menggunakan fungsi ANY_VALUE dalam versi MySQL yang lebih baharu tetapi berfungsi dengan 5.6 dalam persekitaran pengeluaran.
Mod dan Keserasian SQL
Mod ONLY_FULL_GROUP_BY MySQL menghalang pertanyaan seperti yang dikemukakan dalam soalan, yang mendapatkan semula lajur yang tidak disertakan dalam klausa GROUP BY. Mematikan mod ini membolehkan pertanyaan dilaksanakan dalam MySQL 5.6:
SET @mode := @@SESSION.sql_mode; SET SESSION sql_mode = ''; /* your query here */ SET SESSION sql_mode = @mode;
Walau bagaimanapun, perlu diingat bahawa pendekatan ini tidak disyorkan kerana ia boleh menghasilkan keputusan yang tidak pasti. Fungsi ANY_VALUE mengembalikan nilai yang dipilih secara rawak daripada kumpulan, yang membawa kepada kemungkinan kekeliruan dan isu sokongan.
Pertanyaan Alternatif untuk MySQL 5.6
Untuk mendapatkan hasil yang boleh diramal, pertimbangkan untuk mengubah suai pertanyaan untuk memilih imej tertentu untuk setiap negara. Jika jadual imej mengandungi lajur ID autoincrement, pertanyaan berikut boleh digunakan:
SELECT c.id, c.name, i.* FROM countries c LEFT JOIN ( SELECT MIN(id) id, country_id FROM images GROUP BY country_id ) first ON c.id = first.country_id LEFT JOIN images i ON first.id = i.id
Pertanyaan ini memastikan bahawa satu imej dikembalikan untuk setiap negara, memberikan set hasil yang lebih konsisten dan boleh dipercayai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan ANY_VALUE() Fungsi Setara dalam MySQL 5.6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!