2012-06-05 115 views
1

我已經完成了我的研究,但無法弄清楚如何執行此操作。從另一個表插入是非常簡單的,但我想包含WHERE語句。MySQL從另一個表中插入2個選項WHERE語句

我要插入的單個列,column_Q從表A中進入表B的column_Q WHERE表A的column_W = '100' 和column_Q尚不在表B.存在

我嘗試的值:

INSERT INTO B (column_Q) select DISTINCT(column_Q) 
from A WHERE column_W = 100 AND b.column_Q<>a.column_Q; 

我在哪裏做錯了嗎?

PS。兩個表都已經包含值。沒有字段是空的。

回答

4
INSERT 
INTO b (q) 
SELECT DISTINCT q 
FROM a 
WHERE a.w = 100 
     AND a.q NOT IN 
     (
     SELECT q 
     FROM b 
     ) 

如果您b.q上定義一個UNIQUE約束,則只需使用:

INSERT 
IGNORE 
INTO b (q) 
SELECT q 
FROM a 
WHERE w = 100 
1

你不能指「轉讓」的左側,因爲從B否當前行(這將是你正在插入的那個)你需要檢查一個類似的行是否已經存在於B中,如:

INSERT INTO B (column_Q) 
SELECT DISTINCT(A.column_Q) 
FROM A 
WHERE A.column_W = 100 
AND NOT EXISTS (
    SELECT * 
    FROM B 
    WHERE B.column_Q = A.column_Q 
    ); 
相關問題