在 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 2010 中将嵌入式宏转换为 vba 后,代码不再起作用