sql >> Databasteknik >  >> RDS >> Mysql

SQL-användningskolumn från underval i where-sats

Du kan inte använda ett kolumnalias i WHERE klausul.

Så antingen slår du in din fråga i ett yttre urval och tillämpar ditt villkor där

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

eller så kan du introducera det villkoret i HAVING klausul istället

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

Ytterligare ett tillvägagångssätt är att använda CROSS JOIN och tillämpa ditt villkor i WHERE klausul

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

Här är SQLFiddle demo för alla ovan nämnda frågor.



  1. Inget stöd för OVER i MS SQL Server 2005?

  2. Använda endast tangentbordsnavigering i Word, Excel och PowerPoint (Del 2:Dialogrutor)

  3. hur man hoppar över en dålig rad i ssis platt filkälla

  4. PostgreSQL:Varning:Konsolens teckentabell (437) skiljer sig från Windows teckentabell (1252)