这是我的方法:
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