[英]mysql update one table from another
我有一個超過270萬行的海量數據庫。 它包含英國房地產價格的數據。
第一個表稱為PricePaid,並具有稱為Price和Loc4的列。
現在,我試圖獲取按loc4分組的每年的平均值,並更新另一個名為PricePaidByCounty的表格。
我創建了以下SQL語句:
INSERT PricePaidByCounty (County, Avg2013)
SELECT Loc4,
Avg(Price) as AvgPrice2013 FROM PricePaid WHERE Date Like '%2013%'
Group BY Loc4
這對於插入初始行效果很好,但是我想使用更新語句,因為我每個月都需要運行此SQL查詢。
誰能告訴我如何更改此插入內容以進行更新。
我這樣做是因為我需要按年快速顯示每個位置的平均房價。 而且數據庫太大了,我不想在流感上這樣做
謝謝
您可以在重復鍵更新語句( https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html )上使用insert ...使用以下查詢來更新表:
INSERT INTO PricePaidByCounty (County, Avg2013)
SELECT Loc4, Avg(Price) as AvgPrice2013
FROM PricePaid
WHERE Date Like '%2013%'
GROUP BY Loc4
ON DUPLICATE KEY UPDATE Avg2013=AvgPrice2013
為此,您需要確保將一組(County,Avg2013)定義為唯一鍵。
看起來表PricePaidByCounty
需要三列Country
, Year
和Average
以便在按年更新時可以選擇按特定年份更新。 然后查詢將像:
UPDATE PricePaidByCounty ppbc JOIN (SELECT Loc4,
Avg(Price) as AvgPrice FROM PricePaid WHERE Date Like '%2013%'
Group BY Loc4) ap SET ppbc.Average = ap.AvgPrice WHERE ppbc.Country = ap.Loc4 AND ppbc.Year = 2013;
可以將其增強為Loc4
和Year
組,並直接更新為PricePaidByCounty
。 由於您有多個記錄,它可能會運行幾天。 :D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.