2011-02-17 40 views
1

我需要從一個表中複製一些數據到另一個,但我需要使用WHERE子句才能使其正常工作。INSERT INTO tbl_1與來自tbl_2的數據與WHERE子句

tbl_1classIDvendorIDcategory_id編輯:CATEGORY_ID目前是空的,這就是我試圖從其他表複製...)和departmentID

tbl_2class_codedepartment_idcategory_id

我想抓住tbl_2中的category_id,並將其放入tbl_1,其中tbl_1.classID = tbl_2.class_codetbl_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

如果`tbl_1`爲空,您如何期待`tbl_1.classID = tbl_2.class_code`返回任何內容? – 2011-02-17 18:21:33

+0

@所有,我的道歉。 `tbl_1.category_id`是空的,而不是整個`tbl_1` – Ofeargall 2011-02-17 18:26:18

回答

2

我認爲你正在尋找一個UPDATEtbl_1tbl_2採取正確category_id,而不是一個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

您的插入語句應該指定要插入數據的列,並且選擇需要指定您也從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 

顯然,您需要解決這個問題,以適應您的具體示例。

+0

他告訴tbl_1是空的。左連接將失敗 – 2011-02-17 18:18:32

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 
)