Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带有where条件的Insert语句引发错误_Sql_Oracle_Syntax Error_Sql Insert - Fatal编程技术网

Sql 带有where条件的Insert语句引发错误

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运算符

以下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
运算符的左侧。我想应该是
账户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
的不同处理方式?谢谢