Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Có khả năng ANY_VALUE cho mysql 5.6 không?

Bạn đang sử dụng sai tiện ích mở rộng MySQL không chuẩn khét tiếng cho GROUP THEO . SQL chuẩn sẽ luôn từ chối truy vấn của bạn, vì bạn đang đề cập đến các cột không phải là tổng hợp và không được đề cập trong GROUP BY . Trong hệ thống nhà phát triển của mình, bạn đang cố gắng giải quyết vấn đề đó với ANY_VALUE() .

Trong phiên bản sản xuất, bạn có thể tắt ONLY_FULL_GROUP_BY Chế độ MySQL . Hãy thử thực hiện điều này :

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

Điều này sẽ cho phép MySQL chấp nhận truy vấn của bạn.

Nhưng hãy nhìn xem, truy vấn của bạn không thực sự chính xác. Khi bạn có thể thuyết phục nó chạy, nó sẽ trả về một hàng được chọn ngẫu nhiên từ các images bàn. Loại không xác định đó thường gây ra sự nhầm lẫn cho người dùng và nhóm hỗ trợ kỹ thuật của bạn.

Tại sao không làm cho truy vấn tốt hơn, vì vậy nó chọn một hình ảnh cụ thể. Nếu images của bạn bảng có một id autoincrement bạn có thể thực hiện việc này để chọn hình ảnh "đầu tiên".

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

Điều đó sẽ trả về một hàng cho mỗi quốc gia với một hình ảnh có thể dự đoán được hiển thị.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách liệt kê các bảng trong MySQL và MariaDB

  2. Cách tự động hóa truy vấn bảng Pivot trong MySQL

  3. Làm thế nào để đảo ngược kỹ sư một cơ sở dữ liệu trong MySQL Workbench

  4. Các loại trong MySQL:BigInt (20) so với Int (20)

  5. Hàm MySQL CRC32 () - Ví dụ