我有一个附加的查询
INSERT INTO SPLIT_EXPORT_X2_LOANNOTPRESENT
SELECT SPLIT_EXPORT_X2_2.*
FROM SPLIT_EXPORT_X2_2, IMPORT_CSV
WHERE (((SPLIT_EXPORT_X2_2.coll_key) Not In (Select [LoanIdentifier] from [IMPORT_CSV])));根据贷款标识符,它应该追加SPLIT_EXPORT_X2_2表中没有出现在IMPORT_CSV中的任何内容。
X2表中有许多列,我需要它们全部附加。
作为问题的一个例子,如果IMPORT_CSV表中有20行,那么需要追加1行。它将附上那一行的20份副本。它似乎对每一行进行WHERE检查,并在不匹配时追加。通常由一个组来解决这个问题,但是access告诉我,如果我用星号追加,我就不能使用group by。我必须列出所有的列,并给特定的列一个group by。
还有什么可以替代的吗?
发布于 2018-12-20 21:47:46
在IMPORT_CSV子句中,只在子查询中不需要FROM:
INSERT INTO SPLIT_EXPORT_X2_LOANNOTPRESENT
SELECT SPLIT_EXPORT_X2_2.*
FROM SPLIT_EXPORT_X2_2
WHERE (((SPLIT_EXPORT_X2_2.coll_key) Not In (Select [LoanIdentifier] from [IMPORT_CSV])));我还建议使用NOT EXISTS而不是NOT IN
INSERT INTO SPLIT_EXPORT_X2_LOANNOTPRESENT
SELECT SPLIT_EXPORT_X2_2.*
FROM SPLIT_EXPORT_X2_2
WHERE NOT EXISTS (SELECT 1
FROM IMPORT_CSV
WHERE SPLIT_EXPORT_X2_2.coll_key = IMPORT_CSV.[LoanIdentifier]
);如果子查询中的值为NULL,则NOT IN将过滤掉所有行。
https://stackoverflow.com/questions/53876427
复制相似问题