109 votes

Clause "WITH" de MySQL

J'essaie d'utiliser MySQL pour créer une vue avec la clause "WITH".

WITH authorRating(aname, rating) AS
   SELECT aname, AVG(quantity)
   FROM book
   GROUP BY aname

Mais il ne semble pas que MySQL supporte cela.

Je pensais que c'était assez standard et je suis sûr qu'Oracle le prend en charge. Existe-t-il un moyen de forcer MySQL à utiliser la clause "WITH" ? J'ai essayé avec le moteur MyISAM et innoDB. Les deux ne fonctionnent pas.

2voto

Moshe L Points 543

MariaDB prend désormais en charge WITH. MySQL ne l'est pas pour l'instant. https://mariadb.com/kb/en/mariadb/with/

1voto

Claus Points 1

Avez-vous déjà essayé la table temporaire ? Cela a résolu mon problème :

create temporary table abc (
column1 varchar(255)
column2 decimal
);
insert into abc
select ...
or otherwise
insert into abc
values ('text', 5.5), ('text2', 0815.8);

Ensuite, vous pouvez utiliser ce tableau dans chaque sélection de cette session :

select * from abc inner join users on ...;

1voto

Mantas Dainys Points 31
   WITH authorRating as (select aname, rating from book)
   SELECT aname, AVG(quantity)
   FROM authorRating
   GROUP BY aname

0voto

ysth Points 54757

Les sous-sélections en tant que valeurs doivent généralement être entre parenthèses.

Mise à jour : je ne suis pas sûr de la syntaxe que vous essayez d'utiliser. Pourriez-vous montrer une déclaration plus complète ? CREATE VIEW prend une instruction SELECT qui, afaik, peut avoir un WITH mais seulement là où il serait valide dans un SELECT indépendant.

Mise à jour 2 : err, je pensais à CASE, pas à WITH. Une recherche sur Google ne montre pas de syntaxe WITH spéciale pour Oracle, à l'exception de l'OPTION WITH CHECK que mysql supporte également. Veuillez commencer par décrire ce que vous essayez d'obtenir ?

Mise à jour 3 : à vue de nez, vous voulez dire quelque chose comme ça :

select ... from foo, (select aname avg(quantity) as rating from book group by aname) as authorRating where ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X