Estoy tratando de usar MySQL para crear una vista con la cláusula "WITH"
WITH authorRating(aname, rating) AS
SELECT aname, AVG(quantity)
FROM book
GROUP BY aname
Pero no parece que MySQL lo admita.
Pensé que esto era bastante estándar y estoy seguro de que Oracle lo admite. ¿Hay alguna forma de obligar a MySQL a utilizar la cláusula "WITH"? Lo probé con el motor MyISAM e innoDB. Ambos no funcionan.
Puede que te interese algo como este:
fuente
Subquery
es el nombre que usé para la tabla derivada. Cuando lo usafrom ( ... )
, crea algo como una tabla temporal (una tabla derivada) y requiere un nombre. Por eso uséas Subquery
. Respondiendo a su pregunta, sí, puede, pero tendrá que poner un nombre a la tabla derivada externa (justo antes deGroup By
). Espero que haya ayudado.Tienes la sintaxis correcta:
Sin embargo, como han mencionado otros, MySQL no admite este comando. WITH se agregó en SQL: 1999; la versión más reciente del estándar SQL es SQL: 2008. Puede encontrar más información sobre las bases de datos que admiten las diversas funciones de SQL: 1999 en Wikipedia .
MySQL tradicionalmente se ha retrasado un poco en el soporte del estándar SQL, mientras que las bases de datos comerciales como Oracle, SQL Server (recientemente) y DB2 las han seguido un poco más de cerca. PostgreSQL también suele ser bastante compatible con los estándares.
Es posible que desee ver la hoja de ruta de MySQL; No estoy completamente seguro de cuándo se admitirá esta función, pero es excelente para crear consultas acumuladas legibles.
fuente
Oracle es compatible con WITH.
Se vería así.
@ysth WITH es difícil de buscar en Google porque es una palabra común que normalmente se excluye de las búsquedas.
Le recomendamos que consulte los documentos SELECT para ver cómo funciona la factorización de subconsultas.
Sé que esto no responde al OP, pero estoy limpiando cualquier confusión que pueda haber comenzado.
fuente
Sobre la base de la respuesta de @Mosty Mostacho, así es como puede hacer algo equivalente en MySQL, para un caso específico de determinar qué entradas no existen en una tabla y no están en ninguna otra base de datos.
Es posible que desee utilizar un editor de texto con capacidades de macro para convertir una lista de valores a la cláusula de unión selectiva citada.
fuente
MariaDB ahora es compatible con WITH. MySQL por ahora no lo es. https://mariadb.com/kb/en/mariadb/with/
fuente
fuente
¿Has probado alguna vez la mesa temporal? Esto resolvió mi convern:
Entonces puede usar esta tabla en cada selección en esta sesión:
fuente