首頁 >資料庫 >mysql教程 >為什麼 Microsoft Access 中的 UNION 查詢需要表,即使對於單行選擇也是如此?

為什麼 Microsoft Access 中的 UNION 查詢需要表,即使對於單行選擇也是如此?

Barbara Streisand
Barbara Streisand原創
2025-01-12 09:09:42312瀏覽

Why Do UNION Queries in Microsoft Access Require a Table, Even for Single-Row Selects?

Microsoft Access UNION 查詢:表格要求

在 Microsoft Access 資料庫中,雖然檢索單行的簡單 SELECT 語句可以省略 FROM 子句,但 UNIONUNION ALL 操作需要 FROM 子句,即使對於單行選擇也是如此。

查詢限制

UNION 子句中沒有資料來源的情況下嘗試使用 UNION ALLFROM 會導致錯誤:「查詢輸入必須至少包含一個資料表或查詢。」例如:

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

此查詢將會失敗。

解決問題

要將 UNIONUNION ALL 與基於行的資料一起使用,FROM 子句是必需的,無論是否引用來源表的欄位。 解決方案涉及建立一個虛擬的單行表:

<code class="language-sql">CREATE TABLE Dual (id COUNTER PRIMARY KEY);
INSERT INTO Dual (id) VALUES (1);
ALTER TABLE Dual ADD CONSTRAINT there_can_be_only_one CHECK ((SELECT Count(*) FROM Dual) = 1);

SELECT "foo" AS my_text
FROM Dual
UNION ALL
SELECT "bar"
FROM Dual;</code>

另一種方法涉及使用 TOP 1WHERE 子句將結果限制為現有表中的單行。

重要注意事項: Jet 4 中引入的 CHECK 約束僅與 ADO 相容。 實作此解決方法時,使用 DAO 可能會產生語法錯誤。

以上是為什麼 Microsoft Access 中的 UNION 查詢需要表,即使對於單行選擇也是如此?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn