Mengagregatkan tanpa Kumpulan: Penyelesaian untuk MySQL 5.6
Dalam MySQL 5.6, fungsi ANY_VALUE(), yang membenarkan untuk mengagregatkan lajur bukan berkumpulan , tidak tersedia. Ini menimbulkan cabaran apabila memindahkan pertanyaan daripada MySQL 5.7 ke 5.6.
Pengubahsuaian Mod MySQL
Satu penyelesaian ialah mengubah suai mod SQL untuk persekitaran pengeluaran. Dengan menetapkan mod ONLY_FULL_GROUP_BY kepada kosong, ia akan melumpuhkan sementara sekatan pada mengagregat lajur bukan berkumpulan.
SET SESSION sql_mode = ''; /* Your query here */ SET SESSION sql_mode = @mode;
Kaedah Pengagregatan Alternatif
Walau bagaimanapun, ia adalah penting untuk ambil perhatian bahawa pertanyaan yang dipersoalkan mungkin tidak sesuai. Ia mengembalikan baris rawak daripada jadual "imej" untuk setiap negara.
Pendekatan yang lebih dipercayai ialah memilih baris imej tertentu berdasarkan kriteria, seperti lajur "id".
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 akan mengembalikan satu baris bagi setiap negara dengan pilihan imej yang boleh diramal. Ia menggunakan lajur "id" untuk memilih imej "pertama" bagi setiap negara.
Atas ialah kandungan terperinci Bagaimana untuk Mengagregatkan Lajur Tidak Berkumpulan dalam MySQL 5.6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!