簡體   English   中英

mysql從另一個更新一個表

[英]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需要三列CountryYearAverage以便在按年更新時可以選擇按特定年份更新。 然后查詢將像:

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;

可以將其增強為Loc4Year組,並直接更新為PricePaidByCounty 由於您有多個記錄,它可能會運行幾天。 :D

暫無
暫無

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

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