Access SQL根据缺少的条件插入整行

Access SQL根据缺少的条件插入整行,sql,ms-access,vba,sql-insert,Sql,Ms Access,Vba,Sql Insert,我有两张表,按字段和外字段 我试图根据两个标准插入缺少的行—campo和categoria。这些行至少有10个字段 我想添加缺少的campo行和缺少的categoria(如果campo在那里) 这就是我的全部: strSQL = "INSERT INTO tblBYFIELD ([CAMPO], [CATEGORIA])" & _ "SELECT [EXTRAFIELDS].[CAMPO], [EXTRAFIELDS].[CATEGORIA]" _

我有两张表,按字段和外字段 我试图根据两个标准插入缺少的行—campo和categoria。这些行至少有10个字段 我想添加缺少的campo行和缺少的categoria(如果campo在那里) 这就是我的全部:

   strSQL = "INSERT INTO tblBYFIELD ([CAMPO], [CATEGORIA])" & _
            "SELECT [EXTRAFIELDS].[CAMPO], [EXTRAFIELDS].[CATEGORIA]" _
            "FROM [EXTRAFIELDS]" & _
            "WHERE NOT EXISTS (SELECT ***TOP*** 1" &_
            "FROM BYFIELD AS SIM"&_
            "WHERE EXTRAFIELDS.[CAMPO] = SIM.[CAMPO] AND EXTRAFIELDS.[CATEGORIA] = SIM.[CATEGORIA]);"
CurrentDb.Execute strSQL
表按字段示例: Campo Categoria Aceite天然气等。。。 Tintal 1PDP 0 0 Tintal 2PDNP 0 0

表外部字段示例: Campo Categoria Aceite天然气等。。。 Tintal 1PDP 0 0 Tintal 2PDNP 0 0 Tintal 3PD 0 0


我想插入缺少的带有3PD的Tintal行。

运行代码时会发生什么-错误、错误结果,什么都没有

为什么在顶部有***?为什么要使用TOP1?你真的只想返回一条记录吗?正如@Andre所说,数据示例将很有帮助。你的描述没有什么意义

第二行中缺少(&D)。在u前面缺少一个空格,在每行末尾前面缺少一个空格

"INSERT INTO tblBYFIELD ([CAMPO], [CATEGORIA]) " & _
     "SELECT [EXTRAFIELDS].[CAMPO], [EXTRAFIELDS].[CATEGORIA] " & _
     "FROM [EXTRAFIELDS] " & _
     "WHERE NOT EXISTS (SELECT TOP 1 " & _
     "FROM BYFIELD AS SIM " & _
     "WHERE EXTRAFIELDS.[CAMPO] = SIM.[CAMPO] AND EXTRAFIELDS.[CATEGORIA] = SIM.[CATEGORIA]);"
这修正了语法,但不确定它是否能提供您想要的结果

使用发布的示例数据进行测试。是否要提取所有字段?假设每个表中的字段具有相同的名称,并且在设计中的顺序相同,则此操作有效: 将“从外部字段中选择*”插入到“从外部字段中选择*”,其中Campo&Categoria不在“从外部字段中选择Campo&Categoria”;
否则,请修改以指定要填充和从中提取的字段。

。示例数据和预期结果比文本描述有用得多。我认为我需要前1名。我能把它拿出来吗?我有一个表,表中的字段跨越-Campo Categoria aceite等。对于Campo下的每个条目,Categoria中有9个不同条目中的一个。我想添加未包含在第一个表中但包含在第二个表中的任何缺少的campos。然后我想添加任何缺少的类别。示例:表中缺少Campo Tintal Categoria 1PPP,我想将第二个表中的内容包括在内。请参阅修订后的答案。