Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL-Spalte aus Subselect in Where-Klausel verwenden

Sie können keinen Spaltenalias in WHERE verwenden Klausel.

Sie packen Ihre Abfrage also entweder in eine äußere Auswahl und wenden dort Ihre Bedingung an

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

oder Sie können diese Bedingung in HAVING einführen Klausel statt

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

Ein weiterer Ansatz ist die Verwendung von CROSS JOIN und wenden Sie Ihre Bedingung in WHERE an Klausel

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

Hier ist SQLFiddle Demo für alle oben genannten Abfragen.