使用内部联接插入记录后更新表

用户名

我使用来自TableB和TableC的“选择/内部联接”插入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的重复记录。

有没有办法在第一次插入作为更新之后进行传递,或者有办法使它们分别作为插入然后在C,S,M相同的情况下合并记录?

萨加斯

对join使用更新:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章