Salut j'ai tables comme ceci:MISE À JOUR MYSQL avec IN et des sous-requêtes
entrée de la table:
id | nombre_commentaires
_____________________
1 | 0
2 | 0
3 | 0
4 | 0
commentaires de table:
id | eid | commenter
_____________________
1 | 1 | commenter sdfd
2 | 1 | essais de tests
3 | 1 | nombre de commentaire
4 | 2 | commentaire factice
5 | 2 | exemple de commentaire
6 | 1 | fg FGH DFH
Recherche i écrire:
UPDATE entry
SET total_comments = total_comments + 1
WHERE id IN (SELECT eid
FROM comments
WHERE id IN (1,2,3,4,5,6))
Résultats que je reçois est:
entrée de la table:
id | nombre_commentaires
_____________________
1 | 1
2 | 1
3 | 0
4 | 0
Résultats attendus:
entrée de la table:
id | nombre_commentaires
_____________________
1 | 4
2 | 2
3 | 0
4 | 0
Toute aide sera appréciée.
ouais je cherche quelque chose comme ça ... mon motif est d'exécuter la requête de mise à jour basée sur la sous-requête .... sa mise à jour "total_comments" dans "entrée" table avec acutal nombre de commentaires, id dans « l'entrée » si j'Exécuter la requête que je l'ai indiqué, il ajoute que 1 pour tout nombre de commentaires trouvés dans subqery Voici ce que la requête SQL se transforme en après l'exécution des sous-requêtes. entrée MISE à JOUR SET total_comments = total_comments + 1 WHERE id IN (1,1,1,2,2,1) donc la mise à jour s'exécute une seule fois pour les ID 1 et 2 dans la table d'entrée. Coz c'est comment fonctionne IN. Mais je veux un peu comment l'exécuter 4 fois pour 1 et 2 fois pour 2. – Johal
La seule façon dont je pense est d'exécuter quelque chose sous-requête comme ce que je ne sais pas comment faire: UPDATE entrée SET total_comments = total_comments + @count WHERE id IN (SELECT eid, count (*) comme @count des commentaires WHERE id IN (1,2,3,4,5,6)) mais ne marche pas dans le travail coz de plusieurs lignes et aussi je ne sais pas comment faire référence à @count dans l'état défini :( – Johal