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中文網其他相關文章!