Comment mettre à jour plusieurs tables par simple requête mysql?
J'ai deux tables tb1 & tb2
- Je mettre à jour une colonne commune de les deux tables, je.e user_level
J'ai des critères communs pour les deux tableaux comme nom d'utilisateur.
Si je veux mettre à jour comme ceci:
UPDATE tb1, tb2 SET user_level=1 WHERE username="Mr.X"
Mais de toute façon ça ne fonctionne pas.
Quelle serait la bonne requête mysql pour cela?
- Quand tu dis de la base de données-vous vraiment dire de la base de données ou une table?
- Non, je l'ai dit par erreur. Ces tables. J'ai mis à jour ma question
- Donc, voir ma réponse.
- C'est montrer: la Colonne "user_level' dans la liste des champs est ambigu
- Je veux utiliser Comme ceci: mise à JOUR tb1,tb2 ENSEMBLE tb1.user_level=1, tb2.user_level=1 where username="M. X" Est-il juste de requête?
- mais nom d'utilisateur doit venir de soit tb1 ou tb2 et vous voulez probablement une autre condition. Essayez
WHERE tb1.username = "Mr.X" AND tb2.username = "Mr.X"
- Si vous n'ajoutez pas une seconde condition, toutes les lignes dans celui de la table sera mise à jour qui n'est probablement pas ce que vous voulez.
- Vous faites une jointure en spécifiant 2 tables, donc personnellement, je voudrais juste run 2
UPDATE
déclarations, si vous n'avez pas de soins pour les jointures. Il est également plus facile à lire de cette façon. - Mise à JOUR tb1,tb2 ENSEMBLE tb1.user_level=1, tb2.user_level=1 where username="M. X" ET tb1.nom d'utilisateur=tb2.nom d'utilisateur. est-il correct?
Vous devez vous connecter pour publier un commentaire.
Votre problème est résolu,il suffit de suivre ce que j'ai fait-
create table tb1(user_level int);
créer une table tb2(user_level int,nom d'utilisateur de type varchar(20));
insérer dans tb1 valeurs(2);
insérez dans tb2 de valeurs(2,'Monsieur X');
J'ai deux tables comme ça où user_level est commun,maintenant, selon vous, j'ai essayé de mettre à jour le user_level colonne dans les deux table à l'aide d'une requête sur des critères communs pour les deux tableau c'est à dire le nom d'utilisateur.
J'ai essayé de mettre à jour la valeur de user_level colonne de 2 à 3 dans les deux tables où le nom d'utilisateur est 'Monsieur X' à l'aide d'une seule requête,j'ai donc essayé la requête suivante et il a parfaitement fonctionné..
Essayez ceci:
J'ai testé le code sur MSAccess et SQL SERVER 2008
Essayez ceci:
Le voir ici sur le violon: http://sqlfiddle.com/#!2/ba34ac/1
Le bon requête est que vous devez spécifier l'intégralité de la table et de la ligne/colonne vous essayez de mettre à jour dans les deux tableaux et en effet la base de données si vous êtes à jour dans les bases de données trop.
exemple typique:
Nous pouvons le mettre à jour sans jointure comme ce
Nous pouvons le mettre à jour avec une jointure comme ce