DELETE a,b
FROM a AS a
INNER JOIN b AS b ON a.b_id = b.id
WHERE a.id IN (1,2,3,4)
La requête ci-dessus ne supprime que 1 enregistrements, pourquoi? Je veux supprimer tous les 4 enregistrementsMysql - supprimer plusieurs tables
DELETE a,b
FROM a AS a
INNER JOIN b AS b ON a.b_id = b.id
WHERE a.id IN (1,2,3,4)
La requête ci-dessus ne supprime que 1 enregistrements, pourquoi? Je veux supprimer tous les 4 enregistrementsMysql - supprimer plusieurs tables
ne fonctionne pas DELETE avec JOIN
Je l'exécute et ne reçois aucun avis d'erreur, mais il supprime seulement le premier enregistrement dans les deux tableaux? Quelle est la bonne façon? – Chameron
essayez ceci: SUPPRIMER a. *, B. * ou: SUPPRIMER * –
J'ai créé un échantillon de test comme suit:
Test d'usage
TABLE DROP IF EXISTS a;
TABLE DE GOUTTE SI EXISTE b;
CRÉER TABLE a (ID INT NON NULL PRIMARY KEY);
CREATE TABLE b (ID INT NON NULL PRIMARY KEY);
INSÉRER DANS LES VALEURS (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
INSÉREZ DANS b VALEURS (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
SELECT * FROM a;
SELECT * FROM b; SUPPRIMER a. * A PARTIR D'UN JOINDRE INTÉRIEUR b SUR a.id = b.id O WH a.id IN (1,2,3,4);
SELECT * FROM a;
Voici mes résultats:
lwdba @ localhost (test DB) :: test d'utilisation
Base de données a changé
lwdba @ localhost (test DB) :: DROP TABLE IF EXISTS a;
Recherche OK, 0 lignes affectées (0,06 sec)
lwdba @ localhost (test DB) :: DROP TABLE IF EXISTS b;
Recherche OK, 0 lignes affectées (0,06 sec)
lwdba @ localhost (test DB) :: CREATE TABLE a (id INT NOT NULL clé primaire);
Recherche OK, 0 lignes affectées (0,23 sec)
lwdba @ localhost (test DB) :: CREATE TABLE b (id INT NOT NULL clé primaire);
Query OK, 0 lignes affectées (0,17 sec)
lwdba @ localhost (test DB) :: insérer dans une VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Recherche OK, 10 lignes affectées (0,06 sec)
Records: 10 Doublons: 0 Avertissements: 0
lwdba @ localhost (test DB) :: INSERT INTO b (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Interrogation OK, 10 lignes affectées (0.06 sec)
Records: 10 Doublons: 0 Avertissements: 0
lwdba @ localhost (test DB) :: SELECT * FROM un;
+ ---- +
| id |
+ ---- +
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
10 rows in set (0.00 sec)
lwdba @ localhost (test DB) :: SELECT * FROM b;
+ ---- +
| id |
+ ---- +
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
10 lignes set (0.00 sec)
lwdba @ localhost (test DB) :: SUPPRIMER a, b D'un INNER JOIN b = ON a.id b.id OÙ un.id IN (1,2,3,4); Requête OK, 4 lignes affectées (0,08 sec)
lwdba @ localhost (test DB) :: SELECT * FROM a;
+ ---- +
| id |
+ ---- +
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
6 rows in set (0.00 sec)
lwdba @ localhost (test DB) :: SELECT * FROM b;
+ ---- +
| id |
+ ---- +
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+ ---- +
6 rows in set (0.00 sec)
Lui donner un essai !!!
BTW j'ai enlevé "AS a" et "b AS" de votre requête et j'ai changé a.b_id à a.id
hehe merci, j'ai une erreur dans ma requête (mais dans ma question c'est correct: D). IN ('1,2,3,4') à la place IN (1,2,3,4). Vous supprimez uniquement dans un tableau? DELETE a. * – Chameron
J'ai essayé mon exemple avec DELETE a au lieu de DELETE a. *. Cela a fonctionné aussi bien! En fait, j'ai remis DELETE a, b et l'ai lancé. Il a en effet supprimé des tables a et b. J'ai mis à jour ma réponse pour refléter cela. Merci, je fais maintenant confiance à DELETE pour supprimer de deux tables en même temps !!! – RolandoMySQLDBA
Vous obtenez +1 sur votre question pour m'apprendre quelque chose aujourd'hui. – RolandoMySQLDBA
(+1) bonne question. –