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 ...
我在 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 ...