Sql 插入不起作用的行
有人能告诉我为什么这个代码不起作用吗?我一直在第1行和第2行出错 我想为CUSTLA表中的每一行在PROBLEMTABLE表中插入一行,其中CustCode与CUSTCATEGORY源表中的PK值不匹配 第1行的错误没有给我一个原因,但是第2行的错误表明该列定义不明确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
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连接语法所取代,不鼓励使用它