Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 插入不起作用的行_Sql_Sql Insert - Fatal编程技术网

Sql 插入不起作用的行

Sql 插入不起作用的行,sql,sql-insert,Sql,Sql Insert,有人能告诉我为什么这个代码不起作用吗?我一直在第1行和第2行出错 我想为CUSTLA表中的每一行在PROBLEMTABLE表中插入一行,其中CustCode与CUSTCATEGORY源表中的PK值不匹配 第1行的错误没有给我一个原因,但是第2行的错误表明该列定义不明确 INSERT INTO PROBLEMTABLE (problemid, source_rowid, source_table, filterid, datetime, action) SELECT PR

有人能告诉我为什么这个代码不起作用吗?我一直在第1行和第2行出错

我想为CUSTLA表中的每一行在PROBLEMTABLE表中插入一行,其中CustCode与CUSTCATEGORY源表中的PK值不匹配

第1行的错误没有给我一个原因,但是第2行的错误表明该列定义不明确

INSERT INTO PROBLEMTABLE (problemid, source_rowid, source_table, filterid, datetime, action)
    SELECT 
        PROBLEM_SEQ.NEXTVAL, ROWID, 'CUSTLA', 2, CURRENT_DATE, 'MODIFY'
    FROM 
        CUSTLA U, CUSTCATEGORY Y
    WHERE 
        U.CustCode != Y.CustCode;

SELECT * FROM PROBLEMTABLE;

您没有正确地检查可保管文件中不存在的记录。请改为尝试此查询:

INSERT INTO PROBLEMTABLE (problemid, source_rowid, source_table, 
                          filterid, datetime, action)
    SELECT PROBLEM_SEQ.NEXTVAL, ROWID, 'CUSTLA', 
           2, CURRENT_DATE, 'MODIFY'
    FROM CUSTLA U
    WHERE NOT EXISTS (SELECT 1 FROM CUSTCATEGORY Y WHERE U.CustCode = Y.CustCode)
出现的错误是由于SELECTclause中指定的字段导致的,该字段同时存在于CUSTLA和CUSTCATEGORY表中。这称为不明确字段,因为RDBMS引擎无法决定选择哪个字段


注意:您的查询使用隐式交叉联接来检查不存在的记录。这样会得到大量冗余记录

您能告诉我们错误的全部内容吗?说明已在@giorgosbetsos处编辑。表CUSTLA和CUSTCATEGORY都包含一个同名的列,可能是列ROWID。在SELECT语句中,将表别名添加到两个表中存在的列中,例如SELECT U.ROWID…您的RDBMS是什么25年前,在ANSI-92 SQL标准中,旧样式的逗号分隔表列表样式被正确的ANSI连接语法所取代,不鼓励使用它