我正在尝试从使用子查询创建的另一个表中的数据更新一个表中的两个属性/列。这是我的代码。

CREATE TABLE tmpempcnt (SELECT projno, count(*) as ct FROM Pworks group by projno);

UPDATE Proj
INNER JOIN tmpempcnt ON Proj.projno = tmpempcnt.projno
SET Proj.empcnt = tmpempcnt.ct;

CREATE TABLE (SELECT projno as p, SUM(hours) as h FROM Pworks GROUP BY projno);

UPDATE Proj
INNER JOIN tmphrstotal ON Proj.projno = tmphrstotal.p
SET Proj.hrstotal = tmphrstotal.h;



有没有一种方法可以不预先创建表?
谢谢

最佳答案

mysql允许多表更新https://dev.mysql.com/doc/refman/8.0/en/update.html。就你而言

drop table if exists pworks,proj;

create table proj(projno int,empcnt int, hrstotal int);
create table pworks(projno int,hours int);

insert into proj values(1,null,null);

insert into pworks values
(1,10),(1,10);

update proj
join (select projno,count(*) cnt,sum(hours) hrs from pworks group by projno) s on s.projno = proj.projno
set   empcnt = cnt,hrstotal = hrs;


可能会做

关于mysql - 使用联接或子查询来更新表MYSQL中的每一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58776752/

10-09 15:55