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

MySQL - SELECT AS in WHERE

Za prvé, nemůžete použít ALIAS na WHERE doložka. Měli byste používat sloupec,

SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
FROM   users 
WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'

Důvod je následující:pořadí operací je SQL,

  • Klauzule FROM
  • klauzule WHERE
  • Klauzule GROUP BY
  • Klauzule HAVING
  • klauzule SELECT
  • Klauzule ORDER BY

ALIAS probíhá na SELECT klauzule, která je před WHERE doložka.

pokud opravdu chcete použít alias, zabalte jej do dílčího dotazu,

SELECT *
FROM
    (
        SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
        FROM   users
    ) s
WHERE   val  = '15'


  1. Ukládání úvodních nul celých čísel v databázi MySQL jako INTEGER

  2. Chyba SQL s řazením podle v poddotazu

  3. Nelze přidat ovladač mysql do jboss

  4. Vytvořit tabulku mysql přímo ze souboru CSV pomocí modulu úložiště CSV?