带有SELECT结果的SQL更新

时间:2011-10-28 23:53:52

标签: mysql sql

我有一个广泛的SQL SELECT,它为许多用户执行TotalNetWorth的计算。结果是TotalNetworth和用户。这可以包含多个记录。例如:

-------------------------
|TotalNetWorth | UserId |
-------------------------
|  24.45       |  1     |
|  45.34       |  3     |
-------------------------

我想要做的是使用NetWorth值更新Users表格中的TotalNetWorth列,并使用UserId = Users.Id作为关键字。什么是最好的方法呢?

6 个答案:

答案 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)