我有一个广泛的SQL SELECT,它为许多用户执行TotalNetWorth的计算。结果是TotalNetworth和用户。这可以包含多个记录。例如:
-------------------------
|TotalNetWorth | UserId |
-------------------------
| 24.45 | 1 |
| 45.34 | 3 |
-------------------------
我想要做的是使用NetWorth
值更新Users
表格中的TotalNetWorth
列,并使用UserId
= Users.Id
作为关键字。什么是最好的方法呢?
答案 0 :(得分:4)
您可以在别名子查询上使用JOIN
。
UPDATE
Users
FROM
Users u
INNER JOIN
(SELECT WhatEver FROM YourQueryThatCalcsNetWorth) nw
ON
nw.UserID = u.UserId
答案 1 :(得分:1)
像这样的东西
UPDATE u
FROM Users u
JOIN tableTotalNetWorth t ON t.UserID = u.UserId
答案 2 :(得分:1)
CREATE TEMPORARY TABLE TempNetWorth AS (SELECT * FROM [your query])
UPDATE Users u, TempNetWorth t
SET u.NetWorth = t.TotalNetWorth
WHERE u.UserID = t.UserId
答案 3 :(得分:1)
先进行选择,然后立即使用cte
帮助
WITH cte_query AS (
SELECT TotalNetWorth = <calculate_total>
FROM [Users])
UPDATE cte_query
SET TotalNetWorth = TotalNetWorth;
答案 4 :(得分:0)
您可以INSERT .... SELECT .... ON DUPLICATE KEY UPDATE ....
进行操作,如here所述。
答案 5 :(得分:0)
您可能必须首先使用广泛的SELECT查询将数据提取到临时表中,例如“temp”,然后尝试使用此查询:
Update Users set NetWorth = (select TotalNetWorth from temp where Users.Id = temp.UserId)