J'ai une requête qui ressemble à ça:
SELECT a, b, c,
(SELECT d from B limit 0,1) as d
FROM A
WHERE d >= 10
J'obtiens le résultat souhaité lorsque j'exécute la requête sans la clause where
mais lorsque j'ajoute la clause where
, la requête échoue.
Quelqu'un a-t-il une suggestion pour résoudre ce problème?
Vous ne pouvez pas utiliser d'alias de colonne dans la clause WHERE
.
Donc, vous pouvez soit envelopper votre requête dans une sélection externe et y appliquer 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 la clause HAVING
à 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 la clause WHERE
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.
C'est ce que tu veux?
SELECT a, b, c,
B.d
FROM A, (SELECT d from B limit 0,1) B
WHERE B.d >= 10