這是我的方法:
http://sqlfiddle.com/#!9/2eb74
在這種撥弄你可以玩的數據,幫助了很多嘗試的事情s ...首先點擊左下角的「Build Schema」按鈕,然後嘗試右側的「運行SQL」按鈕。
這裏是上面的小提琴的內容:
設置一些測試數據:
CREATE TABLE responsible (
category VARCHAR(100),
name VARCHAR(255)
);
INSERT INTO responsible VALUES
('teaching', 'First PersonA'),
('cleaning', 'Second PersonB'),
('watch', 'Third PersonC'),
('sleep', 'Fourth PersonD'),
('shopping', 'Third PersonC');
CREATE TABLE employee (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(100),
address VARCHAR(255),
PRIMARY KEY k_employee_id(id)
);
INSERT INTO employee VALUES
(NULL, 'First PersonA', 'some address'),
(NULL, 'Second PersonB', 'some address'),
(NULL, 'Some Person', 'some address'),
(NULL, 'Third PersonC', 'some address'),
(NULL, 'Other Person', 'some address'),
(NULL, 'Fourth PersonD', 'some address');
的模式的實際轉換:
ALTER TABLE responsible ADD COLUMN id INT;
UPDATE responsible r LEFT JOIN employee e ON (r.name=e.name) SET r.id=e.id;
ALTER TABLE responsible MODIFY COLUMN id INT NOT NULL;
ALTER TABLE responsible ADD FOREIGN KEY(id) REFERENCES employee(id) ON DELETE CASCADE;
ALTER TABLE responsible DROP COLUMN name;
而且最後測試聲明作爲上述證明:
SELECT * FROM responsible;
你先一個id
列添加到表responsible
,然後通過以下UPDATE
聲明加入employee
桌上擺滿。剩下的是修改現在填充的responsible.id
列,因爲它是有意義的,並且刪除現在已經過時的列responsible.name
列。
請將您的表格結構添加到上面的問題。使用編輯按鈕。這樣可以得到更好的答案,因爲人們不必一般地寫字,但可以提供具體的解決方案。謝謝! – arkascha
對不起。第一次發佈到堆棧溢出。如果有任何其他信息可以提供,請告訴我。 – thebluelad
你的問題不清楚,你的研究懷疑。 – Strawberry