Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL usa coluna da subseleção na cláusula where


Você não pode usar um alias de coluna em WHERE cláusula.

Então você envolve sua consulta em uma seleção externa e aplica sua condição lá
SELECT * 
  FROM
(
  SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
) q
 WHERE d >= 10

ou você pode introduzir essa condição em HAVING cláusula em vez disso
SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
HAVING d >= 10

Outra abordagem é usar CROSS JOIN e aplique sua condição em WHERE cláusula
SELECT a, b, c, d
  FROM A CROSS JOIN 
(
  SELECT d FROM B LIMIT 0,1
) q
 WHERE d >= 10

Aqui está SQLFiddle demo para todas as consultas acima mencionadas.