Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sql语句将MySQL数据库中的数据从一个表传输到另一个表_Mysql_Insert Select - Fatal编程技术网

使用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