在 ms access 2010 中将查询结果插入表中

Posted

技术标签:

【中文标题】在 ms access 2010 中将查询结果插入表中【英文标题】:Insert query results into table in ms access 2010 【发布时间】:2013-10-25 23:23:50 【问题描述】:

我需要在 MS Access 数据库中将数据从一种模式转换为另一种模式。这涉及编写查询以从旧模式中选择数据,然后将查询结果插入到新模式中的表中。下面是我正在尝试做的一个例子。下面的 SELECT 组件工作正常,但 INSERT 组件不起作用。有人可以告诉我如何解决以下问题,以便有效地将 SELECT 语句的结果插入到目标表中吗?

INSERT INTO CompaniesTable 
    (CompanyName) 
    VALUES
    (
        SELECT DISTINCT 
            IIF(a.FIRM_NAME IS NULL, b.SUBACCOUNT_COMPANY_NAME, a.FIRM_NAME) AS CompanyName   
        FROM 
            (SELECT ContactID, FIRM_NAME, SUBACCOUNT_COMPANY_NAME FROM qrySummaryData) AS a
            LEFT JOIN 
            (SELECT ContactID, FIRM_NAME, SUBACCOUNT_COMPANY_NAME FROM qrySummaryData) AS b
            ON a.ContactID = b.ContactID
    );  

目标表(CompaniesTable)的定义是:

CompanyID      Autonumber  
CompanyName    Text  
Description    Text  
WebSite        Text  
Email          Text  
TypeNumber     Number  

【问题讨论】:

【参考方案1】:

也许你有一个错字,但将一个表连接到自身不需要连接,这应该可以正常工作。在 select 语句上插入时,您不会使用 values 关键字。

INSERT INTO CompaniesTable (CompanyName,Description,Website,Email,TypeNumber) 
    SELECT DISTINCT IIF(FIRM_NAME IS NULL, SUBACCOUNT_COMPANY_NAME, FIRM_NAME), 
                    '','','',0 
    FROM qrySummaryData

【讨论】:

谢谢。我试过了,它给了我与我之前尝试过的其他类似的结果。它将数据完美地输出到查询数据表视图中,但是 CompaniesTable 仍然为空。我需要将结果插入到 CompaniesTable 中。 @CodeMed - 这个说法是正确的,CompanyTable 是否有更多的列——也许是非空的? 是的,CompanyTable 有六个字段,其中一个是自动编号键。在此查询运行之前,整个表都是空的。在编写/运行更复杂的东西之前,我正在使用此查询进行测试。 @CodeMed - 请发布目标表的定义。 我刚刚在上面的原始帖子末尾发布了目标表的定义。还有什么想法吗?

以上是关于在 ms access 2010 中将查询结果插入表中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?

如何在 MS Access 2010 中将 ACCDB 转换为 MDB

插入查询中发生语法错误(MS Access)

在 ms access 2010 中将嵌入式宏转换为 vba 后,代码不再起作用

MS-Access 连接表在两个互斥列表之间插入/删除(2 个列表框)

如何在拆分数据库中将表从前端链接到后端(MS Access 2010)