1

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

我想将表 A 中的单个列 column_Q 的值插入表 B 的 column_Q 中,表 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。两个表都已包含值。没有字段为空。

4

2 回答 2

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
于 2012-06-05T11:20:16.827 回答
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
    );
于 2012-06-05T11:27:19.107 回答