sql >> Databáze >  >> RDS >> Mysql

Existuje schopnost ANY_VALUE pro mysql 5.6?

Zneužíváte pro GROUP notoricky známé nestandardní rozšíření MySQL BY . Standardní SQL váš dotaz vždy odmítne, protože zmiňujete sloupce, které nejsou agregované a nejsou uvedeny v GROUP BY . Ve vašem dev systému se to snažíte obejít pomocí ANY_VALUE() .

V produkci můžete vypnout režim MySQL ONLY_FULL_GROUP_BY . Zkuste udělat toto :

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

To umožní MySQL přijmout váš dotaz.

Ale podívej, tvůj dotaz není úplně správný. Když jej můžete přesvědčit, aby se spustil, vrátí náhodně vybraný řádek z images stůl. Tento druh neurčitosti často způsobuje zmatek pro uživatele a váš tým technické podpory.

Proč nevylepšit dotaz tak, aby vybral konkrétní obrázek. Pokud vaše images tabulka má automatický přírůstek id sloupec, můžete tak vybrat "první" obrázek.

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

To vrátí jeden řádek na zemi s předvídatelným zobrazeným obrázkem.



  1. Svatý grál čištění vstupu a výstupu v php?

  2. Jak zrušit tabulku, pokud existuje?

  3. Jak přesunout model mezi dvěma aplikacemi Django (Django 1.7)

  4. ODBC dotaz na MS SQL Server vrací prvních 255 znaků pouze v PHP PDO (FreeTDS)