【问题标题】:Insert INTO NOT EXISTS SQL access插入 INTO NOT EXISTS SQL 访问
【发布时间】:2015-04-01 15:47:36
【问题描述】:

我正在尝试使用 sql 将另一个表中的记录插入到 Access 中的表中。我已经粘贴了下面的声明。我想插入存在于 ImportMetricsIDs01262015 但不存在于 ShouldImportMetricsIDs 中的记录。它运行完美,没有任何错误,但即使我物理添加新记录,它也不会插入任何内容。

INSERT INTO ShouldImportMetricsIDsTable ( [Formulary ID], [Market Segment] )
SELECT ImportMetricsIDs01262015.[Formulary ID], ImportMetricsIDs01262015.[Market Segment]
FROM ImportMetricsIDs01262015
WHERE NOT EXISTS (SELECT *
FROM ShouldImportMetricsIDsTable);

【问题讨论】:

    标签: sql vba ms-access insert


    【解决方案1】:

    您需要一个关联子句。子查询只是检查表是否为空。比如:

    INSERT INTO ShouldImportMetricsIDsTable( [Formulary ID], [Market Segment] )
        SELECT im.[Formulary ID], im.[Market Segment]
        FROM ImportMetricsIDs01262015 as im
        WHERE NOT EXISTS (SELECT 1
                          FROM ShouldImportMetricsIDsTable as sim
                          WHERE im.[Formulary ID] = sim.[Formulary ID] AND
                                im.[Market Segment] = sim.[Market Segment]
                         );
    

    【讨论】:

    • i 定义在哪里?
    【解决方案2】:

    您需要将NOT Exist 查询与ImportMetricsIDs01262015 表相关联

    此代码假设 FormularyID 是两个表中的键。

    INSERT INTO ShouldImportMetricsIDsTable (
        [Formulary ID]
        ,[Market Segment]
        )
    SELECT ImportMetricsIDs01262015.[Formulary ID]
        ,ImportMetricsIDs01262015.[Market Segment]
    FROM ImportMetricsIDs01262015
    WHERE NOT EXISTS (
            SELECT *
            FROM ShouldImportMetricsIDsTable
            where ShouldImportMetricsIDsTable.[Formulary ID] = ImportMetricsIDs01262015.[Formulary ID]
            );
    

    【讨论】:

      【解决方案3】:

      访问时需要关键字“TOP”,代码中加粗斜体

      INSERT INTO ShouldImportMetricsIDsTable( [Formulary ID], [Market Segment] )
      SELECT im.[Formulary ID], im.[Market Segment]
      FROM ImportMetricsIDs01262015 as im
      WHERE NOT EXISTS (SELECT 
      ***TOP*** 1
                        FROM ShouldImportMetricsIDsTable as sim
                        WHERE im.[Formulary ID] = sim.[Formulary ID] AND
                              im.[Market Segment] = sim.[Market Segment]
                       );
      

      【讨论】:

      • 经过测试,无需 TOP 即可工作。如果使用 TOP 则需要一个字段名或 *:SELECT TOP 1 *.
      猜你喜欢
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2012-09-29
      • 2012-03-02
      • 1970-01-01
      • 2015-02-17
      相关资源
      最近更新 更多