Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah ada kemampuan ANY_VALUE untuk mysql 5.6?

Anda menyalahgunakan ekstensi MySQL tidak standar yang terkenal ke GROUP OLEH . SQL standar akan selalu menolak kueri Anda, karena Anda menyebutkan kolom yang bukan agregat dan tidak disebutkan dalam GROUP BY . Di sistem dev Anda, Anda mencoba mengatasinya dengan ANY_VALUE() .

Dalam produksi, Anda dapat mematikan ONLY_FULL_GROUP_BY Mode MySQL . Coba lakukan ini :

  SET @mode := @@SESSION.sql_mode;
  SET SESSION sql_mode = '';
  /* your query here */
  SET SESSION sql_mode = @mode;

Ini akan memungkinkan MySQL untuk menerima permintaan Anda.

Tapi lihat, kueri Anda tidak sepenuhnya benar. Ketika Anda dapat membujuknya untuk berjalan, ia mengembalikan baris yang dipilih secara acak dari images meja. Ketidakpastian semacam itu sering menyebabkan kebingungan bagi pengguna dan kru dukungan teknis Anda.

Mengapa tidak membuat kueri lebih baik, sehingga memilih gambar tertentu. Jika images . Anda tabel memiliki id peningkatan otomatis kolom Anda dapat melakukan ini untuk memilih gambar "pertama".

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

Itu akan mengembalikan satu baris per negara dengan gambar yang dapat diprediksi ditampilkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Urutkan berdasarkan urutan nilai dalam pernyataan pilih dalam klausa di mysql

  2. PDOException "tidak dapat menemukan driver"

  3. Ganti Ke Sintaks Kueri

  4. Bagaimana menemukan celah dalam penomoran berurutan di mysql?

  5. konfigurasi mysql berhenti saat memulai server