gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:22:34 24 4
gpt4 key购买 nike

我使用来自 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

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

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

最佳答案

使用连接更新:

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

关于mysql - 使用内部联接插入记录后更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36288054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com