Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL utilise la colonne de la sous-sélection dans la clause where

Vous ne pouvez pas utiliser un alias de colonne dans WHERE clause.

Donc, soit vous enveloppez votre requête dans une sélection externe et vous y appliquez votre condition

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

ou vous pouvez introduire cette condition dans HAVING clause à la place

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

Une autre approche consiste à utiliser CROSS JOIN et appliquez votre condition dans WHERE clause

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

Voici SQLFiddle démo pour toutes les requêtes mentionnées ci-dessus.