如何使用一次查询从另一个表的数据更新一个表的所有行的字段?

时间:2015-11-27 04:55:00

标签: mysql sql

我在data_entry表中添加了一个新字段,并希望在其上插入employee_write_task表的emp_id基于employee_write_task.task_id = data_entry.id and employee_write_task.empType_id = 1.的值,这里1是data_entry的任务类型

我尝试过这样的事情:

INSERT INTO data_entry (emp_id) 
SELECT emp_id FROM employee_write_task 
WHERE employee_write_task.task_id = data_entry.id AND employee_write_task.empType_id = 1

但它似乎不起作用。我错过了什么?

我附上了表格及其下面的属性以供参考。

MySQL Queries.

3 个答案:

答案 0 :(得分:2)

UPDATE  data_entry
LEFT JOIN employee_write_task
ON      data_entry.id = employee_write_task.task_id
SET     data_entry.emp_id = employee_write_task.emp_id
WHERE   employee_write_task.empType_id = 1;

答案 1 :(得分:0)

我认为您应该使用update语句而不是insert。尝试如下。

UPDATE data_entry set emp_id =  
    (SELECT emp_id FROM employee_write_task 
    WHERE employee_write_task.task_id = data_entry.id AND employee_write_task.empType_id = 1)

如果以下选择检索的值超过1,则此查询可能会失败。

SELECT emp_id FROM employee_write_task 
    WHERE employee_write_task.task_id = data_entry.id 
    AND employee_write_task.empType_id = 1

在这种情况下,您应该添加更多条件来唯一地对记录进行术语。

问候。

答案 2 :(得分:0)

update data_entry d,employee_write_task e
set d.emp_id=e.emp_id
where d.id=e.task_id AND e.empType_id = 1;