Sql 带有where条件的Insert语句引发错误
以下SQL语句在Oracle中引发错误:Sql 带有where条件的Insert语句引发错误,sql,oracle,syntax-error,sql-insert,Sql,Oracle,Syntax Error,Sql Insert,以下SQL语句在Oracle中引发错误: INSERT INTO TABLE1 (ACCT_NB, ACCT_TYPE, TOKEN_ID) SELECT ACCT_NB, 'A', ID FROM TABLE2 WHERE NOT IN (SELECT ACCT_NB FROM TABLE1 WHERE ACCT_TYPE='A' AND TABLE1.ACCT_NB=TABLE2.ACCT_NB) SQL命令未正确结束。 请帮助更正查询您缺少not in运算符
INSERT INTO TABLE1 (ACCT_NB, ACCT_TYPE, TOKEN_ID)
SELECT ACCT_NB, 'A', ID FROM TABLE2
WHERE NOT IN (SELECT ACCT_NB FROM TABLE1
WHERE ACCT_TYPE='A' AND TABLE1.ACCT_NB=TABLE2.ACCT_NB)
SQL命令未正确结束。
请帮助更正查询您缺少
not in
运算符的左侧。我想应该是账户NB
:
INSERT INTO TABLE1 (ACCT_NB, ACCT_TYPE, TOKEN_ID)
SELECT ACCT_NB, 'A', ID
FROM TABLE2
WHERE ACCT_NB NOT IN (SELECT ACCT_NB
FROM TABLE1
WHERE ACCT_TYPE='A' AND TABLE1.ACCT_NB=TABLE2.ACCT_NB)
使用
不存在
:
INSERT INTO TABLE1(ACCT_NB, ACCT_TYPE, TOKEN_ID)
SELECT ACCT_NB, 'A', ID
FROM TABLE2
WHERE NOT EXISTS (SELECT 1
FROM TABLE1
WHERE ACCT_TYPE = 'A' AND TABLE1.ACCT_NB = TABLE2.ACCT_NB
);
我更喜欢
不存在
而不是不在
中,因为它们处理NULL的方式不同<如果子查询选择了一个NULL
值,则code>NOT IN
将永远不会返回true。您能否详细介绍一下NULL
的不同处理方式?谢谢