Mysql 从另一个select语句更新表
我试图通过从另一个表中选择数据来更新我的列。我提出了这个SQL,它将从两个表中选择数据并将其更新到我的主表中。如下所示Mysql 从另一个select语句更新表,mysql,sql,Mysql,Sql,我试图通过从另一个表中选择数据来更新我的列。我提出了这个SQL,它将从两个表中选择数据并将其更新到我的主表中。如下所示 UPDATE activity a SET a.amount = v.amount, a.count = v.count FROM ( SELECT id, Sum(actual) amount, Count(id) count FROM amount_first
UPDATE activity a
SET a.amount = v.amount,
a.count = v.count
FROM ( SELECT id,
Sum(actual) amount,
Count(id) count
FROM amount_first
WHERE status = 1
AND updated >= 1538323200
AND updated <= 1541001599
GROUP BY id
UNION
SELECT id,
Sum(0) amount,
0 count
FROM amount_second
WHERE type = 3
AND created >= 1538323200
AND created <= 1541001599
GROUP BY id ) v
WHERE v.id = a.playerid
然而,我得到了这个错误
错误代码:1064。您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第4行“从SELECT id、SUM实际金额、Countid count FROM i”附近使用的正确语法
上面的语句哪里出错了?MySQL不支持这种连接语法。您应该在活动表和子查询之间使用显式内部联接:
UPDATE activity a
INNER JOIN
(
SELECT id,
Sum(actual) amount,
Count(id) count
FROM amount_first
WHERE status = 1
AND updated >= 1538323200
AND updated <= 1541001599
GROUP BY id
UNION
SELECT id,
Sum(0) amount,
0 count
FROM amount_second
WHERE type = 3
AND created >= 1538323200
AND created <= 1541001599
GROUP BY id
) v
ON v.id = a.playerid
SET a.amount = v.amount,
a.count = v.count;