Comment joindre deux tables dans une instruction de mise à JOUR?
Envisager les tableaux suivants: les "utilisateurs" et les "tweets"
user_id name tweet_id user_id tweet spam
----------------- ----------------------------------
1 SUSPENDED 1 1 lorem ipsum 0
2 foo 2 1 dolor 0
3 bar 3 2 samet 0
4 SUSPENDED 4 1 stunitas 0
5 3 hello 0
6 4 spamzz! 0
Je veux mettre à jour les "tweets" de la table par le marquage de tous les tweets faite par les utilisateurs SUSPENDUS, comme du spam. Ainsi, dans l'exemple ci-dessus, les tweets avec tweet_id 1, 2, 4 et 6, serait marqué comme spam par la mise à jour du "spam" valeur de 0 à 1.
Je vais avoir de la difficulté à joindre les deux tables. Jusqu'à maintenant, je n'ai eu à participer dans les instructions SELECT, mais cela semble plus gênant:
UPDATE tweets SET spam = 1 WHERE tweets.user_id = users.user_id
AND users.name = 'SUSPENDED'
Ce n'est sûrement pas de travail...qui pourrait me diriger dans la bonne direction?
OriginalL'auteur Pr0no | 2012-03-31
Vous devez vous connecter pour publier un commentaire.
Vous êtes sur la bonne voie, mais vous devez spécifier un
JOIN
entre les tables:vous avez oublié votre
FROM
:SELECT tweet FROM tweets JOIN users ON tweets.user_id = users.user_id WHERE users.name = 'SUSPENDED'
Berkowski j'ai essayé ce type de requête. Mais quand les dossiers d'atteindre 30k Limite de serveur s'est arrêté. Est-il une autre solution?
Vous ne pouvez pas avoir des index sur les colonnes jointes. Assurer les deux d'entre eux ont un indice ou il y a une relation de clé étrangère.
Michael Berkowski Oui Merci pour les commentaires, j'ai essayé d'ajouter une clé Primaire et ça marche comme par magie 🙂 testé 5 lakh enregistrements.
OriginalL'auteur Michael Berkowski
Cela devrait le faire:
Vous pouvez généralement utiliser
JOIN
la même dans unUPDATE
que vous pouvez dans unSELECT
. Vous ne seriez pas en mesure de joindre une table à elle-même dans unUPDATE
, et il ya quelques autres petites manies, mais pour les trucs de base comme cela, il va travailler comme vous le souhaitez.OriginalL'auteur VoteyDisciple
Commencé à répondre avant de vérifier le type de serveur que vous utilisez. Je sais que cela fonctionne dans MS SQL Server. Je ne suis pas sûr à propos de MySQL. N'ont pas de MySQL installé de manière à lui donner un essai.
OriginalL'auteur Dan P
Supposons que, vous disposez de 3 tables et de la nécessité de mettre à jour une colonne à partir d'un
table
avec un autretable
. Il y a plusieurs façons de le faire.S'il vous plaît examiner cette
query
par exemple.Relation entre
tables
doit être entretenue avec soin.OriginalL'auteur Md Jamiruddin