我做了我的研究,但无法弄清楚如何做到这一点。从另一个表插入是非常简单的,但我想包含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。两个表都已包含值。没有字段是空的。
答案 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
);