因此,我在SQL中有多個表,其內容有一個名爲「hashtag_id」的鍵,其中包含一個數字(在本例中爲1-5)。我想快速進入並將ID爲「1」的所有項目更改爲「5」。同時更新多個表
有沒有辦法自動做到這一點?
因此,我在SQL中有多個表,其內容有一個名爲「hashtag_id」的鍵,其中包含一個數字(在本例中爲1-5)。我想快速進入並將ID爲「1」的所有項目更改爲「5」。同時更新多個表
有沒有辦法自動做到這一點?
對於每一個你需要運行下面的查詢表:
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'
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,所以沒有例子)。
在實時系統中,請務必在一個事務中執行您的查詢,以避免不必要的不一致。可能是第二個答案會被視爲單個事務,但我會在現場系統中小心並明確處理事務。 – muehlbau
UPDATE MyTable
SET hashtag_id=5
WHERE hashtag_id=1;
而不是隻發佈一段代碼,請*解釋*爲什麼這段代碼解決了問題。沒有解釋,這不是一個答案。 –
本質上,我需要將值爲1的所有表更改爲5,其中有幾百個這樣的表。 –