Je voudrais effectuer un nettoyage dans l'une de mes tables MySQL Drupal pour supprimer les valeurs en double stockées. Voici la structure:Comment supprimer des lignes similaires de ma table dans MySQL?
NID VID DELTA FIELD_VALUE
100 100 0 foobar
100 100 1 foobar
101 101 0 barbar
101 101 1 barbar
102 102 0 foofoo
Mon but est de supprimer des lignes avec de plus gros DELTA
s si une ligne avec le même NID, VID, FIELD_VALUE
existe avec de plus petits DELTA
.
Ma première tentative a été la requête suivante:
delete from mytable a where a.delta=1 and 1=(select count(nid) from mytable b where b.nid=a.nid and b.vid=a.vid and b.delta=0 and b.field_value=a.field_value)
Malheureusement, le DB dit: (MySQL 5.1.65-CLL)
#1064 - 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 'a where a.delta=1 and 1 = (select count from `field_value` b where' at line 1
qui est pas très utile pour moi.
MISE À JOUR:
Une réponse supprimé m'a dit que MySQL ne supporte pas les alias dans les instructions de suppression, mais la suppression des alias n'a pas aidé. La sous-requête est ok, vérifiée séparément.
Merci, j'ai beaucoup appris de cette belle solution – jabal