mysql supprimer les lignes d'une table à partir d'une autre

WRInaute accro
Tout est dans le titre :lol:

Bref, en sql, ça donne un truc dans ce genre
Code:
DELETE FROM table_1 where id not in (SELECT id from table_2)

... mais ça marche po avec mysql :x

PS : J'utilise un vieux mysql genre 3.23

Merci pour votre aide.
 
WRInaute accro
oui mais il doit y avoir une solution autre que upgrader. En passant par une table temporaire.. ou encore en alterant la structure de la table à supprimer...

D'autres idées ? :-)
 
WRInaute passionné
ben sur des selects, on peu faire des jointure pour obtenir une équivalence, mais sur un delete, je ne sais pas.
 
WRInaute accro
oh, oh, je crois que je commence à bruler avec ceci
Code:
SELECT a . *
FROM `nuke_bbposts` a, `nuke_bbposts_text` b
WHERE b.post_id = a.post_id

La je ramene les lignes de table_1 qui ne sont pas dans table_2

Je persèvere ;-)
 
WRInaute accro
Un truc simple aussi... tit select avec Left Join avec boucle pour faire préparer la requete genre "$laRequete .= '$row[0]' "
Et ensuite tu fais un delete avec un WHERE id IN ($laRequete)

C peut etre pas optimal par contre lol
 
WRInaute accro
eureka, j'y suis :-)

1) Dupliquer la structure de la table table_1 dans une table temporaire temp

2)puis ensuite
Code:
insert temp (SELECT a . *
FROM table_1 a, table_2 b
WHERE b.post_id = a.post_id)

Supprimer table_1

puis renommer temp en table_1 :-)
 
WRInaute passionné
Oula oui ! Si ta table devient grande et que cette action est relativement fréquente, tu vas griller ton serveur. :)

TU peux voir du côté de la bibliothèque PEAR MDB2 si tu es en PHP. Il y a des fonctions permettant de simuler les requêtes imbriquées, quelle que soit ta bse de données. ;)
 
WRInaute accro
non non c'est juste épisodique : c'est pour un petit forum phpbb, histoire de synchroniser bbposts et bbposts_text.

En tout cas merci pour vos interventions.
 
WRInaute accro
c'est bon: pour ceux qui liront ultérieurement ce sujet il faut bien s'assurer que la structure de la table initiale doit être recopiée à l'identique, avec les index et tout le tralala. Et faire attention aussi à la clé primaire, qui dans le cas sus-nommé (phpbb) est une identity : noter la valeur et remettre dans la nouvelle table si besoin est le numéro suivant à la bonne valeur.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut