【问题标题】:Insert query results into table in ms access 2010在 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  

【问题讨论】:

    标签: sql ms-access


    【解决方案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 - 请发布目标表的定义。
    • 我刚刚在上面的原始帖子末尾发布了目标表的定义。还有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 2012-09-04
    • 2016-08-23
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多