【问题标题】:Access SQL Insert entire row based on missing criteriaAccess SQL 根据缺少的条件插入整行
【发布时间】:2017-04-27 16:19:04
【问题描述】:

我有两张表 BYFIELD 和 EXTRAFIELDS 我正在尝试根据两个标准“campo”和“categoria”插入缺失的行。这些行有多个字段(至少十个) 如果有 Campo,我想添加缺少的 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

表 BYFIELD 示例: Campo Categoria Aceite Gas ETC... Tintal 1PDP 0 0 0 Tintal 2PDNP 0 0 0

表 EXTRAFIELDS 示例: Campo Categoria Aceite Gas ETC... Tintal 1PDP 0 0 0 Tintal 2PDNP 0 0 0 Tintal 3PD 0 0 0

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

【问题讨论】:

标签: sql ms-access vba sql-insert


【解决方案1】:

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

为什么在TOP周围有***?为什么使用TOP 1?您真的只想返回 1 条记录吗?正如@Andre 所说,数据示例会有所帮助。你的描述真的没有意义。

第二行缺少 &。每行末尾缺少 _ 前面的空格和 " 前面的空格。

"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]);"

这可以纠正语法,但不确定它是否会提供您想要的结果。

使用发布的示例数据进行了测试。你想拉所有领域吗?假设每个表中的字段名称相同且设计顺序相同,则可行:
INSERT INTO ByFields SELECT * FROM ExtraFields WHERE Campo & Categoria NOT IN (SELECT Campo & Categoria FROM ByFields);
否则,请修改以指定要填充和从中提取的字段。

【讨论】:

  • 我认为我需要Top 1。我可以把它拿出来吗?我有一个表格,其中包含跨领域的字段- Campo Categoria aceite 等。对于 Campo 下的每个条目,类别中有 9 个不同的条目之一。我想添加任何未包含在第一个表中但包含在第二个表中的缺失 campos。然后我想添加任何缺失的类别。 EX:该表缺少 Campo Tintal 类别 1PDP,我想从第二个表中包含它。
  • 查看修改后的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 2018-11-04
相关资源
最近更新 更多