sql >> Databasteknik >  >> RDS >> Mysql

Finns det ANY_VALUE-kapacitet för mysql 5.6?

Du missbrukar det ökända icke-standardiserade MySQL-tillägget till GROUP AV . Standard SQL kommer alltid att avvisa din fråga, eftersom du nämner kolumner som inte är aggregat och inte nämns i GROUP BY . I ditt dev-system försöker du komma runt det med ANY_VALUE() .

I produktionen kan du stänga av ONLY_FULL_GROUP_BY MySQL Mode . Försök att göra detta :

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

Detta gör att MySQL kan acceptera din fråga.

Men titta, din fråga är inte riktigt korrekt. När du kan övertala den att köra, returnerar den en slumpmässigt vald rad från images tabell. Den typen av obestämdhet orsakar ofta förvirring för användare och ditt tekniska supportteam.

Varför inte göra frågan bättre, så att den väljer en viss bild. Om dina images tabellen har ett autoinkrement id kolumnen kan du göra detta för att välja den "första" bilden.

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

Det kommer att returnera en rad per land med en förutsägbar bild som visas.



  1. funktion för att kontrollera om SQLite använder journal_mode=WAL eller journal_mode=DELETE

  2. Hur man installerar SQL * PLUS-klient i linux

  3. SqlDataSourceEnumerator.Instance.GetDataSources() hittar inte lokal SQL-server 2008-instans

  4. MariaDB VERSION() Förklarad