“查询输入必须包含至少一个表或查询”错误 - 嵌套查询,MS Access

时间:2016-01-21 17:01:13

标签: ms-access nested

基本上我们有时(?)需要提供对表的引用,即使我不需要它。例如。 Query input must contain atleast one table or query

我的问题是为什么查询q1 SELECT 1执行得很好并且给我1行-1列结果表,其中1为值,但查询q2 SELECT * FROM q1会产生上述错误?

当我将q1更改为SELECT 1 from dummy_table时,其中dummy_table是具有虚拟值的虚拟表,q2运行正常。

为什么q1的内部结构与q2有任何关系? q1自己的工作就好了。 q2是否“展开”q1然后编译一个语句 SELECT * FROM (SELECT 1)(它本身会产生相同的错误)。我可以以某种方式强制Access不要窥视父母的内部结构吗? 另外,为什么SELECT * FROM (SELECT 1)会出错并且SELECT 1工作正常?

1 个答案:

答案 0 :(得分:2)

访问只接受没有FROM条款的查询,当#34;裸体" SELECT是独立使用的,而不是另一个查询的一部分。

正如您所发现的那样,SELECT 1在整个语句中有效。但Access抱怨"如果您尝试使用"裸&在SELECT

等其他查询中SELECT q.* FROM (SELECT 1) AS q;

同样,虽然SELECT 1SELECT 2在单独使用时都有效,但尝试UNION它们会触发相同的错误:

SELECT 1
UNION ALL
SELECT 2

没有办法规避这个错误。正如你也发现的那样,拯救"裸体" SELECT作为命名查询,然后在另一个中使用命名查询仍会触发错误。它只是Access数据库引擎的一个限制,而且我使用的每个Access版本(> = Access 2000)都是这样。