MySQL 列显示另一个 table 列的总和

MySQL column to show the sum of column in another table

我在 SQL 中有两个 table 都包含用户 ID。

Table 帐户

ID    username     Points
1       abc          ? 
2       def          ?

Table 笔交易

ID    Points
1       10
1       -5
2       20

table 帐户列点应具有 table 交易中该 ID 的总和。所以在table一中,输出应该是id 1为5,id 2为20的点。

我是 MySQL 的新手,所以如果您能稍微解释一下查询,我们将不胜感激。

您需要一个 UPDATE 语句:

UPDATE Accounts a
SET a.Points = (SELECT SUM(t.Points) FROM Transactions t WHERE t.ID = a.ID)

关联子查询returns各点的总和ID.

我认为这不是适合您的数据的设计。既然你可以随时从 table 中获取列 Point 的值,为什么你需要对其进行多路复用,并且每次更新都需要更多维护以保持数据的准确性?而是创建一个包含外部连接的视图,例如

CREATE OR REPLACE VIEW v_acc_trs AS
SELECT a.ID, a.username, SUM(t.Points) total_points 
  FROM Accounts a 
  LEFT JOIN Transactions t
    ON t.ID = a.ID
 GROUP BY a.ID, a.username

并在任何时候使用它来选择符合所需标准的数据:

SELECT * FROM v_acc_trs WHERE ...