Microsoft Access UNION 查詢:表格要求
在 Microsoft Access 資料庫中,雖然檢索單行的簡單 SELECT 語句可以省略 FROM
子句,但 UNION
或 UNION ALL
操作需要 FROM
子句,即使對於單行選擇也是如此。
查詢限制
在 UNION
子句中沒有資料來源的情況下嘗試使用 UNION ALL
或 FROM
會導致錯誤:「查詢輸入必須至少包含一個資料表或查詢。」例如:
<code class="language-sql">SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName</code>
此查詢將會失敗。
解決問題
要將 UNION
或 UNION 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 1
或 WHERE
子句將結果限制為現有表中的單行。
重要注意事項: Jet 4 中引入的 CHECK
約束僅與 ADO 相容。 實作此解決方法時,使用 DAO 可能會產生語法錯誤。
以上是為什麼 Microsoft Access 中的 UNION 查詢需要表,即使對於單行選擇也是如此?的詳細內容。更多資訊請關注PHP中文網其他相關文章!