2013-12-10 21 views
2

我有兩個表:我可以使用GROUP BY在UPDATE表MySQL的交易

m3clients 
client balance 
joe  0 
mark  0 
jeff  0 

m3orders 
client balance 
joe  -100 
joe  50 
joe  -45 
mark  -10 
mark  5 
jeff  60 

我需要連接到餘額的總和更新m3clients表餘額字段他們的名字。

因此,它會讀這樣的事情:

m3clients 
joe -95 
mark -5 
jeff 60 

凡在更新語句我把GROUP BY語句?

UPDATE m3clients 
INNER JOIN m3orders ON (m3orders.client = m3clients.client) 
SET m3clients.balance = m3orders.balance 

回答

0

嘗試這樣的:

UPDATE m3clients m 
INNER JOIN (
    SELECT client,SUM(balance) as bal 
    FROM m3orders 
    GROUP by client) a ON m.client = a.client 
SET m.balance = a.bal 

它使用一個子查詢做到平衡的總和爲每cliente,然後你用你的m3clients表連接它能夠以計算的餘額進行更新。

+0

工作得非常漂亮!非常感謝! – user3087436

0

計算子查詢中每個客戶端的餘額,並將結果與​​表m3clients結合起來。

UPDATE m3clients 
     INNER JOIN 
     (
      SELECT client, SUM(balance) balance 
      FROM m3orders 
      GROUP BY client 
     ) cal ON m3clients.client = cal.client 
SET  m3clients.balance = cal.balance 
+0

這個工作,一旦我意識到你命名SUM(餘額)作爲'平衡'。我只是以爲你想再次平衡,我不明白。感謝您的幫助! – user3087436