我需要将一些数据从一个表复制到另一个表,但我需要使用WHERE子句才能使它全部正常工作。
tbl_1
有classID
vendorID
category_id
(编辑:category_id目前为空,这就是我要从其他表中复制的内容.. 。)和departmentID
tbl_2
有class_code
department_id
和category_id
我想抓住category_id
中的tbl_2
并将其放入tbl_1
和tbl_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
还是类似的东西?
感谢您的帮助。
答案 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
)