我使用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相同的记录组合在一起?
答案 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