Mysql总和从一个表中下载并在另一列中更新

时间:2016-12-11 11:44:27

标签: php mysql sum

我有一张桌子用户和另一张桌子照片。照片表包含名为download的列,其中包含照片的下载。

照片中的

user_id列包含用户的ID。我在名为download的用户中创建了另一个列。我想用照片列中与user_id

中相同ID的总下载量来更新它

所以Photographs表包含此

id  |  user_id  | download
----+-----------+----------
1   |  1        | 5
2   |  1        | 6
3   |  2        | 6
4   |  2        | 6
5   |  1        | 6

Users表包含

    id  |  download 
    ----+----------
    1   |  0        
    2   |  0 

最终结果如下:

id  |  download 
----+----------
1   |  17        
2   |  12  

我试过这个,它会返回user_id及其总下载量。如何在用户表中更新它?

SELECT
    user_id, SUM(download) AS Total
FROM
    Photographs
GROUP BY
    user_id  

1 个答案:

答案 0 :(得分:2)

这个问题的答案很简单。您需要使用子选择,如下所示:

$sql = "
UPDATE users u, ( SELECT user_id, SUM(download) as dcount FROM photographs GROUP BY user_id) as p 
SET u.download = dcount WHERE u.id = p.user_id
";

$result = $conn->query($sql) or die(mysqli_error($conn));

你已经走了一半,干得好。