MySQL从另一个表中插入2个选项WHERE语句

时间:2012-06-05 11:16:42

标签: mysql sql

我做了我的研究,但无法弄清楚如何做到这一点。从另一个表插入是非常简单的,但我想包含WHERE语句。

我想将表A中的单个列column_Q的值插入表B的column_Q WHERE表A的column_W ='100'并且表B中的column_Q不存在。

我试过了:

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

我在哪里做错了?

PS。两个表都已包含值。没有字段是空的。

2 个答案:

答案 0 :(得分: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 :(得分: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
    );