簡體   English   中英

更新和子查詢的問題。 一對多

[英]The problem with update and subquery. one to many

運行此查詢時,得到表的以下錯誤更新列名稱:

update t1 set t1.DIST_= (SELECT SUM(t2.amount) as DIST_ FROM t2
                         WHERE unique_number =300291 and t2.reseller_id ='31')

我有2個表(t1和t2)t1有DIST_列和unique_number和1行t2有很多行和列的數量,unique_number,reseller_id

此請求必須使用t2.reseller_id = '31'從表t2計算金額,並通過unique_number將值寫入t1.DIST_

現在,請求更改所有表列的值,但是我只需要更新t2.unique_number = t1.unique_number的列

您需要在UPDATE語句中使用WHERE子句:

update t1 set t1.DIST_= (SELECT SUM(t2.amount) as DIST_ FROM t2
                         WHERE unique_number =300291 and t2.reseller_id ='31')
where t1.unique_number = 300291

如果您想更新的所有行t1從相應的總和t2 ,加入一個子查詢組他們。

update t1
JOIN (SELECT unique_number, SUM(amount) AS DIST_
      FROM t2
      WHERE reseller_id = '31'
      GROUP BY unique_number) AS t2
ON t1.unique_number = t2.unique_number
SET t1.DIST_ = t2.DIST_

嘗試像下面使用連接

   UPDATE TABLEA t1 
       JOIN (SELECT unique_number,SUM(t2.amount) as DIST_ FROM table2
            group by unique_number
            ) t2 ON t2.unique_number=t1.unique_number
       SET t1.DIST_ =t2.DIST_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM