Problème DELETE pour doublons

Fermé
dav - 8 juil. 2011 à 14:21
 le père - 8 juil. 2011 à 15:08
Bonjour,

Je souhaiterais supprimer des doublons relatifs, pour cela j'utilise la requête suivante (vu sur (http://sqlpro.developpez.com/cours/doublons/#L3) :
DELETE
FROM   bloc T
WHERE  T.id < ANY (SELECT id
                    FROM   bloc  T2
                    WHERE  T.id<> T2.id
                      AND  T.ref= T2.ref
                      AND  T.startchar= T2.startchar               
                      AND  T.value= T2.value
                      AND  T.startline= T2.startline
                      AND  T2.type='Author'
                       )
AND T.type='Javadoc'


Seulement la requête échoue. Or si je remplace le DELETE par SELECT T.id ça me renvoie bien les id des doublons que je veux supprimer.

(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'T WHERE T.id < ANY (SELECT id FROM bloc T2 ' at line 2)

Merci d'avance pour ceux qui tenteront de résoudre mon problème;
Cordialement,
Dav

A voir également:

1 réponse

Bonjour

Comme le message l'indique, c'est le T qui le gêne.
Si je lis le manuel mysql, il n'est pas prévu d'alias aux noms de tables dans la syntaxe de DELETE
DELETE
FROM   bloc 
WHERE  bloc.id < ANY (SELECT id
                    FROM   bloc  T2
                    WHERE  bloc.id<> T2.id
                      AND  bloc.ref= T2.ref
                      AND  bloc.startchar= T2.startchar               
                      AND  bloc.value= T2.value
                      AND  bloc.startline= T2.startline
                      AND  T2.type='Author'
                       )
AND bloc.type='Javadoc'
marchera peu-être mieux. (je n'ai pas essayé)
0