Mysql
 sql >> база данни >  >> RDS >> Mysql

Има ли възможност ANY_VALUE за mysql 5.6?

Вие злоупотребявате с прословутото нестандартно разширение MySQL към GROUP ОТ . Стандартният SQL винаги ще отхвърли вашата заявка, защото споменавате колони, които не са агрегати и не са споменати в GROUP BY . Във вашата система за разработчици се опитвате да заобиколите това с ANY_VALUE() .

В производството можете да изключите ONLY_FULL_GROUP_BY MySQL режим . Опитайте да направите това :

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

Това ще позволи на MySQL да приеме вашата заявка.

Но вижте, вашето запитване всъщност не е правилно. Когато можете да го убедите да стартира, той връща произволно избран ред от images маса. Този вид неопределеност често причинява объркване за потребителите и вашия екип за техническа поддръжка.

Защо не направите заявката по-добра, така че тя избира конкретно изображение. Ако вашите images таблицата има автоматично увеличение 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

Това ще върне един ред за държава с показано предсказуемо изображение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да стартирам SQL скрипт в MySQL?

  2. Wordpress Фатална грешка:Неуловена грешка:Извикване на недефинирана функция mysql_connect() в /wp-includes/wp-db.php:1570

  3. Експортирайте база данни MySQL/MariaDB

  4. Как да преименувате качения файл, преди да го запишете в директория?

  5. Използване на JDeveloper с MySQL база данни и Oracle Database на AWS RDS, част 3