J'essaye de définir la valeur dans une table à la somme des valeurs dans une autre table. Quelque chose dans ce sens:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Bien sûr, dans l'état actuel des choses, cela ne fonctionnera pas - SET
ne prend pas en charge SUM
et ne prend pas en charge GROUP BY
.
Je devrais le savoir, mais mon esprit dessine un vide. Qu'est-ce que je fais mal?
sql
sql-server
tsql
Margaret
la source
la source
Réponses:
la source
Utilisation:
la source
Ou vous pouvez utiliser un mélange de réponses JBrooks et OMG Ponies :
la source
Une bonne situation pour utiliser CROSS APPLY
la source
Je sais que la question est étiquetée SQL Server mais soyez prudent avec UPDATE avec JOIN si vous utilisez PostgreSQL . La réponse @JBrooks ne fonctionnera pas:
Vous devrez l'adapter à:
Voir le paramètre
from_list
dans la documentation pour savoir pourquoiFROM
PostgreSQL est considéré comme une auto-jointure: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239la source
Vous pouvez également utiliser CTE comme ci-dessous.
la source