插入带内连接的记录后更新表

时间:2016-03-29 15:04:03

标签: mysql insert sql-update

我使用TableB和TableC中的Select / Inner Join插入TableA。

Insert into TableA (C,S,M,C100)
SELECT C,S,M,group_concat(CID) FROM TableB
INNER JOIN TableC
ON TableB.CID= TableC.CID and P>=100  group by C,S,M

现在我需要以两种方式更新这些记录。一个与第一个相同,但现在我想更新P <100的不同字段,实质上是:

Insert into TableA (C,S,M,C0)
SELECT C,S,M,group_concat(CID) FROM TableB
INNER JOIN TableC
ON TableB.CID= TableC.CID and P<100  group by C,S,M

除非我不想要新记录,否则我想更新TableA C,S,M匹配的位置

我想要做的第二件事情是类似的,但涉及从不同的表更新,但几乎以相同的方式进行更新

Insert into TableA (C,S,M,C100)
SELECT C,S,M,group_concat(CID) FROM TableD
INNER JOIN TableE
ON TableD.CID= TableD.CID and P>=100  group by C,S,M

换句话说,我可以将每个传递创建为单独的插入,但最终会有重复的C,S,M记录。

有没有办法在第一次插入后执行传递更新OR是否有一种方法可以将它们作为插入执行,然后将C,S,M相同的记录组合在一起?

1 个答案:

答案 0 :(得分:0)

使用加入更新:

UPDATE TableA 
join (select C,S,M,group_concat(CID) as newCol
      FROM TableB
      where P<100
      group by C,S,M) t
 ON (tableA.c = t.c and tableA.s = t.s and TableA.M = t.m)
SET <YourColumn> = t.newCol