使用带有WHERE子句的tbl_2数据插入tbl_1

时间:2011-02-17 18:10:33

标签: mysql

我需要将一些数据从一个表复制到另一个表,但我需要使用WHERE子句才能使它全部正常工作。

tbl_1classID vendorID category_id编辑:category_id目前为空,这就是我要从其他表中复制的内容.. 。)和departmentID

tbl_2class_code department_idcategory_id

我想抓住category_id中的tbl_2并将其放入tbl_1tbl_1.classID = tbl_2.class_code

tbl_1.departmentID = tbl_2.department_id

我尝试使用:

INSERT INTO tbl_1
SELECT tbl_2.gateway_id
FROM tbl_2
WHERE tbl_1.classID = tbl_2.class_code 
AND tbl_1.departmentID = tbl_2.department_id

但是,没有运气。我收到错误'WHERE子句中的未知列tbl_1.classID'

我应该使用UPDATE还是类似的东西?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您的insert语句应指定数据插入的列,而select需要指定您还要从tbl_1中选择。请参阅MySQL手册中的INSERT...SELECT页面。

INSERT INTO tbl_1 (classID, departmentID)
    SELECT tbl_1.classID, tbl_1.class_code, tbl_2.gateway_id
    FROM tbl_1
    RIGHT JOIN tbl_2 ON tbl_2.class_code = tbl_1.classID
    WHERE tbl_1.departmentID = tbl_2.department_id

显然,您需要修复此问题才能使用您的具体示例。

答案 1 :(得分:2)

我认为您正在寻找一个UPDATE来更新tbl_1中的现有行,其中category_id取自tbl_2,而不是INSERT将行添加到tbl_1

UPDATE tbl_1 JOIN tbl_2 ON 
    tbl_1.classID = tbl_2.class_code 
    AND tbl_1.departmentID = tbl_2.department_id
SET tbl_1.category_id = tbl_2.category_id

答案 2 :(得分:0)

这可能对你有所帮助:

INSERT INTO tbl_1 (classID, vendorID, category_id, departmentID)
values
(
SELECT tbl_2.class_code, tbl_2.gateway_id, tbl_2.category_id, tbl_2.department_id
FROM tbl_2
)