exercises - mysql workbench
Columna de uso de SQL de subselección en la cláusula where (2)
Tengo una consulta que se ve algo así:
SELECT a, b, c,
(SELECT d from B limit 0,1) as d
FROM A
WHERE d >= 10
Obtengo el resultado que deseo cuando ejecuto la consulta sin la cláusula where
pero cuando agrego la cláusula where
la consulta falla.
¿Alguien tiene una sugerencia de cómo resolver eso?
¿Es esto lo que quieres?
SELECT a, b, c,
B.d
FROM A, (SELECT d from B limit 0,1) B
WHERE B.d >= 10
No puede utilizar un alias de columna en la cláusula WHERE
.
Entonces, o bien envuelve su consulta en una selección externa y aplica su condición allí
SELECT *
FROM
(
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
) q
WHERE d >= 10
o puede introducir esa condición en la cláusula HAVING
en su lugar
SELECT a, b, c,
(SELECT d FROM B LIMIT 0,1) d
FROM A
HAVING d >= 10
Otro enfoque más es utilizar CROSS JOIN
y aplicar su condición en la cláusula WHERE
SELECT a, b, c, d
FROM A CROSS JOIN
(
SELECT d FROM B LIMIT 0,1
) q
WHERE d >= 10
Aquí está la demostración de SQLFiddle para todas las consultas mencionadas anteriormente.