表1
| email | result |
----------------------------
| abc@gmail.com |0.12 |
| dsv@gmail.com |0.23 |
| rthgmail.com | 0.45 |
| hfg@gmail.com |0.56 |
| yyt@gmail.com | 0.78 |
| hjg@gmail.com | 0.35 |
表2
| resource |
-------------------
| 0.5 |
表3
| temp |
-------------------
|NULL |
现在我想分别从table1和table2添加结果和资源给电子邮件abc@gmail.com并将结果保存在table3中。我想每次都更新table3。
我尝试了以下但不起作用:
UPDATE table3 SET temp = table1.result + table2.resource WHERE email = 'abc@gmail.com'
我怎么能这样做呢?
答案 0 :(得分:1)
您可以使用子查询执行此操作:
UPDATE Table3 t
SET t.temp = (SELECT s.result+p.resource
FROM table1 s INNER JOIN table2 p
ON(s.email = 'abc@gmail.com'))
如果你的Table3还没有数据:
INSERT INTO Table3
(SELECT s.result+p.resource
FROM table1 s INNER JOIN table2 p
ON(s.email = 'abc@gmail.com'))
答案 1 :(得分:0)
好像是一个奇怪的请求,但是你需要update
join
:
UPDATE table3 t3 CROSS JOIN
table2 t2 CROSS JOIN JOIN
(SELECT SUM(t1.result) FROM table1 t1 WHERE t1.email = 'abc@gmail.com') t1
SET t3.temp = t1.result + t2.resource;
你确定你真的不想要insert
吗?
答案 2 :(得分:0)
表2和表3中只有一行数据吗?在这种情况下,您可以这样做:
UPDATE Table3 SET temp=SELECT SUM(result)+(SELECT MAX(resource) from table2) from table1 WHERE email = 'abc@gmail.com'
除MAX之外的任何聚合函数(min,avg等)都可以完成这项工作(如果你在table2中只有一行)。而且,对于table2和table3,身份列也会更好。