首頁 >資料庫 >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