我使用来自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] 删除。
我来说两句