sql >> Databáze >  >> RDS >> Mysql

SQL použije sloupec z podvýběru v klauzuli where

V WHERE nelze použít alias sloupce doložka.

Takže buď zabalíte svůj dotaz do vnějšího výběru a použijete tam podmínku

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

nebo můžete tuto podmínku zavést v HAVING místo toho klauzule

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

Dalším přístupem je použití CROSS JOIN a použijte podmínku v WHERE doložka

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

Zde je SQLFiddle demo pro všechny výše uvedené dotazy.



  1. Spotřeba paměti PDO/MySQL s velkou sadou výsledků

  2. mysql:Jak mohu odstranit znak na začátku nebo na konci pole

  3. Polymorfismus v SQL databázových tabulkách?

  4. datový typ mysql pro telefonní číslo a adresu