我的項目正在不斷擴大,需要從一張桌子擴展到兩張桌子。我可以將列從一個mysql表移動到另一個表,並用新表的新表替換原始列?
我有帖子,每個帖子都有一個作者。目前,作者只是帖子中的一個專欄,但我已經創建了一個名爲authors的新表。我想用新的作者id替換posts表中所有作者值的作者和的所有唯一實例來填充新表。
有一些SQL魔力,可以幫助我做到這一點?我的職位表是30K項,所以我想避免做手工;)
的感謝!
我的項目正在不斷擴大,需要從一張桌子擴展到兩張桌子。我可以將列從一個mysql表移動到另一個表,並用新表的新表替換原始列?
我有帖子,每個帖子都有一個作者。目前,作者只是帖子中的一個專欄,但我已經創建了一個名爲authors的新表。我想用新的作者id替換posts表中所有作者值的作者和的所有唯一實例來填充新表。
有一些SQL魔力,可以幫助我做到這一點?我的職位表是30K項,所以我想避免做手工;)
的感謝!
我會遵循一個過程是這樣的:
table2
table1
table2
添加列table2_id
由table1
選擇,包括table1.id
(但叫它table1_id
所以你還是有自己單獨的ID)和table1.column
你想table1.table2_id
與來自table2
table2
刪除列table1_id
創建新表Authors
。
CREATE TABLE Authors (
author_id INT AUTO_INCREMENT PRIMARY KEY,
author_name VARCHAR(20)
);
填充Authors
與來自Posts
所述一組不同的作者。
INSERT INTO Authors (author_name)
SELECT DISTINCT author_name FROM Posts;
添加AUTHOR_ID列帖子,它引用作者。
ALTER TABLE Posts ADD COLUMN author_id INT,
ADD FOREIGN KEY (author_id) REFERENCES Authors(author_id);
更新Posts
與相應AUTHOR_ID值的基礎上,一個(低效)聯接基於在每個表中的AUTHOR_NAME。 MySQL支持多表UPDATE語法,這不是標準的SQL,但對於這些情況非常方便。
UPDATE Posts JOIN Authors USING (author_name)
SET Posts.author_id = Authors.author_id;
刪除帖子,從現在冗餘AUTHOR_NAME和可選使AUTHOR_ID不能爲空。
ALTER TABLE Posts DROP COLUMN author_name, MODIFY author_id INT NOT NULL;
我其實不想在表2中table1.id我想與表1中的任何帖子,是由匹配筆者 –
它能夠在年底跌至創建相關table2.id。 –