Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[mysql] erreur avec NOT IN

1 réponse
Avatar
dric-li
Bonjour

MySQL version 3.23.58

2 tables :
- tbl_news (id_news:int, titre:varchar)
- tbl_article_news (article:int, news: int)

Ce que je veux faire est simple : je veux supprimer de tbl_news les
enregistrements dont l'id_news n'est pas parmi les news de l'autre table.

D'où :
DELETE FROM `tbl_news` WHERE `id_news` NOT IN (
SELECT `news` FROM `tbl_article_news`)

Résultat :
#1064 - You have an error in your SQL syntax near 'SELECT `news` FROM
`tbl_article_news`)' at line 1

Je ne comprends pas d'où vient l'erreur.
Je précise que je n'ai pas le choix d'utiliser cette version de MySQL :(

1 réponse

Avatar
Patrick Texier
Le Thu, 29 Mar 2007 21:31:20 +0200, dric-li a écrit :

D'où :
DELETE FROM `tbl_news` WHERE `id_news` NOT IN (
SELECT `news` FROM `tbl_article_news`)

Résultat :
#1064 - You have an error in your SQL syntax near 'SELECT `news` FROM
`tbl_article_news`)' at line 1

Je ne comprends pas d'où vient l'erreur.



C'est comme l'article précédent avec UNION, les requêtes imbriquées ne
sont disponibles qu'avec la version 4.1 (4.0 pour UNION), voir la doc :

« 13.1.8 Subquery Syntax
----------------------

A subquery is a `SELECT' statement inside another statement.

Starting with MySQL 4.1, all subquery forms and operations that the SQL
standard requires are supported, as well as a few features that are
MySQL-specific.

[...]

13.1.8.3 Subqueries with `ANY', `IN', and `SOME'
»

Le paragraphe 1.3 donne la liste des fonctionalités selon les versions :

«
Unions 4.0
Subqueries 4.1
R-trees 4.1 (for `MyISAM' tables)
Stored procedures 5.0
Views 5.0
Cursors 5.0
Foreign keys 5.1 (already implemented in 3.23 for
`InnoDB')
Triggers 5.0 and 5.1
Full outer join 5.1
Constraints 5.1
»

Je précise que je n'ai pas le choix d'utiliser cette version de MySQL :(



Je suis dans le même cas. J'ai donc installé une 4.1 sous Windows et une
3.23 sous Linux pour pouvoir tester avant de mettre en ligne.
--
Patrick Texier
Base de données libre de résultats de grands-prix.
(F1, GP pre-1950, F2, F3000, GP2, A1GP, IRL, ChampCars...)
<http://www.gpsql.org>