将查询保存到表中
Posted
技术标签:
【中文标题】将查询保存到表中【英文标题】:Saving a query into a Table 【发布时间】:2016-03-10 10:03:02 【问题描述】:我搜索了一个我遇到的问题,但我发现部分答案我无法完全理解。我正在使用 access2010。
简单来说,我想过滤一个表[newsearch]
,以根据我的 WHERE 条件显示结果。
我可以使用 SELECT 和 WHERE 条件并通过查询获得结果,但我希望将此结果保存到 [newsearch]
,这意味着我希望此 [newsearch]
仅包含此查询的结果。
我尝试使用 SELECT INTO,但由于我的源和目标是 [newsearch]
,它不起作用。
我现在运行的查询是:
strSQL = "SELECT * FROM [newsearch] WHERE [newsearch].[" & Me.Combo17 & "] = '" & Me.Text18 & "'"
Set qdef = db.CreateQueryDef("User query results", strSQL)
qdef.close
Set qdef = Nothing
Set db = Nothing
DoCmd.OpenQuery "User query results", acViewNormal
这会在查询表中为我提供结果,但我希望将其保存到 [newsearch]
。
我该怎么做?
【问题讨论】:
SELECT SOURCE.Field1, SOURCE.Field2 INTO TABLEA FROM SOURCE WHERE SOURCE.field3=xyz 抱歉,我的问题有误。我已经尝试过了,但它不起作用,因为 source 和 Destination 都是 [newsearch] 。所以你的代码是:SELECT * INTO [newsearch] FROM [newsearch] WHERE [newsearch].field3=xyz。它不会工作 所以你想把它重新添加到同一个表中吗?还是它们在不同的数据库中? 我想将它添加回同一个数据库中的同一个表中。但是该表应该只包含结果,所有以前的记录都必须被删除(所以没有更新)并且这个新的查询结果必须被放入。 【参考方案1】:select into
查询创建一个表,但显然你不能创建一个已经存在的表。你有两个选择:
不要选择你需要的,而是从你的表中删除那些你不需要的记录:delete from [newsearch] where field3<>xyz
您可以使用select into
创建一个新表,然后删除[newsearch]
,然后将新表重命名为[newsearch]
。
【讨论】:
完全正确 :) 问题具有误导性,只需删除您不需要的内容 :) 无法删除。但是第二种方法被证明是完美的!!!非常感谢大家...我删除了源表并用旧名称重命名了新表。完美。 在这种情况下,请将答案标记为已接受,以向观众表明问题已结束。以上是关于将查询保存到表中的主要内容,如果未能解决你的问题,请参考以下文章