Problème DELETE pour doublons

dav -  
 le père -
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

1 réponse

  1. le père
     
    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