首页 >数据库 >mysql教程 >为什么我的 UNION 查询会导致'查询输入必须至少包含一个表或查询”错误?

为什么我的 UNION 查询会导致'查询输入必须至少包含一个表或查询”错误?

Patricia Arquette
Patricia Arquette原创
2025-01-12 09:03:46321浏览

Why Does My UNION Query Cause a

Jet/ACE 数据库引擎中的 UNION 查询错误:缺少表或查询

问题:

在执行不包含表源的 UNION 查询时,可能会遇到错误“Query input must contain at least one table or query”。

例如,以下查询有效:

<code class="language-sql">SELECT "Mike" AS FName</code>

但是,尝试使用以下查询联合多行则会失败:

<code class="language-sql">SELECT "Mike" AS FName
UNION ALL
SELECT "John" AS FName</code>

解决方案:

这不是 Jet/ACE 数据库引擎的错误或限制。要对多行执行 UNION 或 UNION ALL 操作,必须包含 FROM 子句,即使您没有引用该数据源中的任何字段。

示例:

您可以使用只有一行的表作为虚拟表,例如:

<code class="language-vba">Public Sub CreateDualTable()
    Dim strSql As String
    strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);"
    CurrentProject.Connection.Execute strSql
End Sub</code>

然后,您可以在 UNION 查询中使用此表:

<code class="language-sql">SELECT "Mike" AS FName
FROM Dual
UNION ALL
SELECT "John" AS FName
FROM Dual;</code>

替代方法:

或者,您可以使用带有 TOP 1 或 WHERE 子句的 SELECT 语句,将结果集限制为一行:

<code class="language-sql">SELECT TOP 1 "Mike" AS FName
FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery

SELECT "Mike" AS FName
FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery
WHERE ID = 1</code>

以上是为什么我的 UNION 查询会导致'查询输入必须至少包含一个表或查询”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn