2012-06-05 65 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 
    ); 
相关问题