2016-03-29 50 views
1

我使用TableB和TableC中的選擇/內連接插入表格A.使用內連接插入記錄後更新表格

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 

除了我不希望新的記錄我想更新,其中表A 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相同的記錄組合起來?

回答

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 
+0

謝謝。這可能看起來像一個愚蠢的問題,但我無法使其工作(新加入);假設我不再需要將B連接到C,我只想用TableB Field,group_concat更新TableA,並使用相同的ON條件和組。我已經嘗試過並失敗了,所以關於這方面的一些事情對我來說並沒有意義(但是),如何更新將不勝感激。 – user3649739

+0

沒問題@ user3649739。如果你發佈了你的嘗試,我可能會告訴你你錯了,無論如何我已經更新了答案 – sagi

相關問題