使用sql语句将MySQL数据库中的数据从一个表传输到另一个表
我将一个联接表与其相关实体合并在一起,因为这种关系是一对一的 因此,原来的使用sql语句将MySQL数据库中的数据从一个表传输到另一个表,mysql,insert-select,Mysql,Insert Select,我将一个联接表与其相关实体合并在一起,因为这种关系是一对一的 因此,原来的ww_staff表直接保存了ww_联系人的详细信息 我根据我认为从MySQL的角度来看合乎逻辑的内容编写了以下语句 但是,这并不快乐 有人能看到类似的解决方案或公然的违规行为吗 INSERT INTO ww_staff s (phone, mobile, email, skype) VALUES ( SELECT w.phone, w.mobile, w.email, w.skype FROM w
ww_staff
表直接保存了ww_联系人的详细信息
我根据我认为从MySQL的角度来看合乎逻辑的内容编写了以下语句
但是,这并不快乐
有人能看到类似的解决方案或公然的违规行为吗
INSERT INTO
ww_staff s
(phone, mobile, email, skype)
VALUES
(
SELECT w.phone, w.mobile, w.email, w.skype
FROM ww_contacts w
JOIN ww_staff s
ON s.staff_ID = w.contacts_ID
);
只需删除值()
--更新
由于您正在从ww_联系人w JOIN ww_staff
中进行选择-所有记录都已存在-并且您不想插入重复项,请使用带有JOIN的更新:
UPDATE ww_staff s JOIN ww_contacts w ON s.staff_ID = w.contacts_ID
SET s.phone = w.phone, s.mobile = w.mobile, s.email = w.email, s.skype = w.skype;
下次请在你的问题中解释更多你想做什么。你需要做一个插入。。。选择。。。在重复密钥更新时
语句。这将插入新行并更新现有行:
INSERT INTO
ww_staff
(staff_ID, phone, mobile, email, skype)
SELECT w.contacts_ID, w.phone, w.mobile, w.email, w.skype
FROM ww_contacts w
JOIN ww_staff s
ON s.staff_ID = w.contacts_ID
ON DUPLICATE KEY UPDATE
ww_staff.phone = w.phone, ww_staff.mobile = w.mobile, ww_staff.email = w.email, ww_staff.skype = w.skype
哈哈-“我的”sql当然:)-还是不是顺便说一句,“不开心”不是有效的MySQL错误消息。在这种情况下,这是非常明显的(参见Scrum Meister的答案),但请记住,对于未来的PostSun预期结果似乎我无法将这些字段(电话、手机、电子邮件、skype)添加到现有记录(员工ID)-每次使用新员工ID复制记录。有人知道为什么吗?每次运行查询时,您都在复制表。“你想做什么?”@Jonathan Amend-我知道我需要在哪里更清楚地解释我的要求。对不起,我不会再犯同样的错误了。两种解决方案都很有效。谢谢
INSERT INTO
ww_staff
(staff_ID, phone, mobile, email, skype)
SELECT w.contacts_ID, w.phone, w.mobile, w.email, w.skype
FROM ww_contacts w
JOIN ww_staff s
ON s.staff_ID = w.contacts_ID
ON DUPLICATE KEY UPDATE
ww_staff.phone = w.phone, ww_staff.mobile = w.mobile, ww_staff.email = w.email, ww_staff.skype = w.skype