MySQL从另一个具有2个选项WHERE语句的表插入
我已经做了研究,但不知道怎么做。从另一个表插入非常简单,但我想包括WHERE语句 我想将一个单列的值,即表a中的列_Q插入表B的列_Q,其中表a的列_W='100'和列_Q在表B中不存在 我试过:MySQL从另一个具有2个选项WHERE语句的表插入,mysql,sql,Mysql,Sql,我已经做了研究,但不知道怎么做。从另一个表插入非常简单,但我想包括WHERE语句 我想将一个单列的值,即表a中的列_Q插入表B的列_Q,其中表a的列_W='100'和列_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.两个表都已包含值。没有字段为空 INSERT INT
INSERT INTO B (column_Q) select DISTINCT(column_Q)
from A WHERE column_W = 100 AND b.column_Q<>a.column_Q;
我哪里做错了
PS.两个表都已包含值。没有字段为空
INSERT
INTO b (q)
SELECT DISTINCT q
FROM a
WHERE a.w = 100
AND a.q NOT IN
(
SELECT q
FROM b
)
如果您的b.q上定义了唯一的约束,则只需使用:
INSERT
IGNORE
INTO b (q)
SELECT q
FROM a
WHERE w = 100
如果您的b.q上定义了唯一的约束,则只需使用:
INSERT
IGNORE
INTO b (q)
SELECT q
FROM a
WHERE w = 100
您不能引用作业的左侧,因为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
);
您不能引用作业的左侧,因为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
);