Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna di utilizzo SQL da subselect in where clausola

Non puoi utilizzare un alias di colonna in WHERE clausola.

Quindi avvolgi la tua query in una selezione esterna e applichi la tua condizione lì

SELECT * 
  FROM
(
  SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
) q
 WHERE d >= 10

oppure puoi introdurre quella condizione in HAVING clausola invece

SELECT a, b, c,
    (SELECT d FROM B LIMIT 0,1) d
  FROM A
HAVING d >= 10

Ancora un altro approccio consiste nell'usare CROSS JOIN e applica la tua condizione in WHERE clausola

SELECT a, b, c, d
  FROM A CROSS JOIN 
(
  SELECT d FROM B LIMIT 0,1
) q
 WHERE d >= 10

Ecco SQLFiddle demo per tutte le domande di cui sopra.