[10.0.20-MariaDB] Delete + requête indentée
Bonjour,
Je rencontre un problème sur une de mes requêtes DELETE que je n'arrive pas à résoudre.
Voici ma requête :
Code:
1 2 3 4 5 6
| DELETE FROM NM.NM_SWITCH A
WHERE A.host LIKE 'SW003'
AND A.interface LIKE 'Fa4/0/39'
AND A.date NOT IN (SELECT MAX(date) from NM.NM_SWITCH B
WHERE B.host LIKE 'SW003'
AND B.interface LIKE 'Fa4/0/39') |
L'objectif est de supprimer toutes mes entrées hormis la MAX(DATE).
Je rencontre une erreur, et malheureusement, je ne comprend pas pourquoi.
Mariadb me retourne ce message :
Code:
1 2 3 4
| ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'A
WHERE A.host LIKE 'SW003'
AND A.interface LIKE 'Fa4/0/39'
AND A.date NOT IN' at line 1 |
Cette même requête en Select fonctionne :
Code:
1 2 3 4 5 6 7 8 9
|
DELETE FROM NM.NM_SWITCH A
WHERE A.host LIKE 'SW003'
AND A.interface LIKE 'Fa4/0/39'
AND A.date NOT IN (SELECT MAX(date) from NM.NM_SWITCH B
WHERE B.host LIKE 'SW003'
AND B.interface LIKE 'Fa4/0/39')
[...]
9 rows in set (0.00 sec) |
Voici la table :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| MariaDB [NM]> describe NM_SWITCH;
+---------------+--------------+------+-----+-----------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+-----------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| HOST | varchar(25) | NO | | NULL | |
| IP | varchar(15) | NO | | NULL | |
| PORT | int(3) | NO | | NULL | |
| INTERFACE | varchar(25) | NO | | NULL | |
| IFADMINSTATUS | varchar(5) | NO | | NULL | |
| IFOPERSTATUS | varchar(5) | NO | | NULL | |
| IFSPEED | varchar(5) | NO | | NULL | |
| IFINERROR | int(11) | NO | | NULL | |
| IFINERRORT1 | int(11) | NO | | 0 | |
| IFOUTERROR | int(11) | NO | | NULL | |
| IFOUTERRORT1 | int(11) | NO | | 0 | |
| MACADDR | varchar(20) | NO | UNI | NULL | |
| DATE | datetime | NO | | NULL | |
| COMMENT | varchar(140) | NO | | NOCOMMENT | |
+---------------+--------------+------+-----+-----------+----------------+ |
Pour information :
Cette requête fonctionne :
Code:
1 2 3 4
| DELETE FROM NM.NM_SWITCH A
WHERE A.host LIKE 'SW003'
AND A.interface LIKE 'Fa4/0/39'
AND A.date NOT IN (SELECT MAX(date) from NM.NM_SWITCH B) |
et celle-ci ne fonctionne pas :
Code:
1 2 3 4 5
| DELETE FROM NM.NM_SWITCH A
WHERE A.host LIKE 'SW003'
AND A.interface LIKE 'Fa4/0/39'
AND A.date NOT IN (SELECT MAX(date) from NM.NM_SWITCH B
WHERE 1) |
L'erreur provient dès lors que j'ajoute une condition dans ma requête indentée.
Je suis à court d'idée et de recherches Google :D.
C'est pourquoi je viens demander un coup de main.
Merci.