sql >> Database >  >> RDS >> Mysql

SQL gebruik kolom van subselect in waar clausule

U kunt geen kolomalias gebruiken in WHERE clausule.

Dus je wikkelt je zoekopdracht in een buitenste selectie en past je voorwaarde daar toe

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

of je kunt die voorwaarde invoeren in HAVING clausule in plaats daarvan

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

Nog een andere benadering is het gebruik van CROSS JOIN en pas uw voorwaarde toe in WHERE clausule

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

Hier is SQLFiddle demo voor alle bovengenoemde vragen.



  1. Escape-tekens voor zoeken in volledige tekst in SQL Server?

  2. Verschil tussen UNIX_TIMESTAMP en NOW() in MySQL

  3. Binnen een triggerfunctie, hoe u kunt zien welke velden worden bijgewerkt?

  4. Het object 'DF__*' is afhankelijk van kolom '*' - Veranderen in int in double