2012-10-09 85 views
0

因此,我在SQL中有多個表,其內容有一個名爲「hashtag_id」的鍵,其中包含一個數字(在本例中爲1-5)。我想快速進入並將ID爲「1」的所有項目更改爲「5」。同時更新多個表

有沒有辦法自動做到這一點?

+1

本質上,我需要將值爲1的所有表更改爲5,其中有幾百個這樣的表。 –

回答

1

對於每一個你需要運行下面的查詢表:

UPDATE yourtable 
SET hashtag_id = 5 
WHERE hashtag_id = 1 

此發現其中hashtag_id是1的所有行並將其設置爲5


要獲得所有的名字您可以運行以下查詢表:

SELECT table_name 
FROM information_schema.columns 
WHERE table_schema = 'your_schema' 
AND column_name = 'hashtag_id' 
2
update table set hashtag_id = 5 
where hashtag_id = 1; 

,如果你有多個表,你可以做在phpMyAdmin類似的東西(或任何MySQL的管理工具)

這將查詢information_schema.columns表(描述所有的表和列),並寫名爲hashtag_id)每列

SELECT CONCAT('UPDATE ', 
       table_name, 
       ' SET ', 
       column_name, 
       ' = 5 WHERE ', 
       column_name, 
       ' = 1;' 
      ) 
FROM information_schema.columns 
WHERE column_name = 'hashtag_id'; 
--maybe add AND table_schema = <your_schema> 

副本更新查詢和執行結果

這可能大概也可以在一個使用動態sql的存儲過程中完成(不用於MySQL,所以沒有例子)。

+0

在實時系統中,請務必在一個事務中執行您的查詢,以避免不必要的不​​一致。可能是第二個答案會被視爲單個事務,但我會在現場系統中小心並明確處理事務。 – muehlbau

0
UPDATE MyTable 
SET hashtag_id=5 
WHERE hashtag_id=1; 
+1

而不是隻發佈一段代碼,請*解釋*爲什麼這段代碼解決了問題。沒有解釋,這不是一個答案。 –