sakila exercises consultas columns all mysql sql where-clause subquery

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.