MS Access (Jet/ACE)中的無表UNION查詢
在使用Jet/ACE資料庫引擎的Microsoft Access中,嘗試使用UNION查詢而沒有指定表格資料來源時,可能會遇到錯誤。將出現錯誤訊息「查詢輸入必須至少包含一個表格或查詢」。
此限制源自於引擎對FROM子句中至少一個資料表或查詢的要求,即使未使用該資料來源中的任何欄位也是如此。要克服這個問題,您可以使用始終包含單行的虛擬表。
建立虛擬表
<code>Public Sub CreateDualTable() Dim strSql As String strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "INSERT INTO Dual (id) VALUES (1);" Debug.Print strSql CurrentProject.Connection.Execute strSql strSql = "ALTER TABLE Dual" & vbNewLine & _ vbTab & "ADD CONSTRAINT there_can_be_only_one" & vbNewLine & _ vbTab & "CHECK (" & vbNewLine & _ vbTab & vbTab & "(SELECT Count(*) FROM Dual) = 1" & vbNewLine & _ vbTab & vbTab & ");" Debug.Print strSql CurrentProject.Connection.Execute strSql End Sub</code>
使用虛擬表
使用虛擬表,您現在可以建立無表UNION查詢:
<code>SELECT "foo" AS my_text FROM Dual UNION ALL SELECT "bar" FROM Dual;</code>
替代方法
或者,您可以使用帶有TOP 1或WHERE子句的SELECT語句將結果集限制為單行。
請注意,檢查約束僅在透過ADO(CurrentProject.Connection.Execute)執行的語句中可用。 DAO(CurrentDb.Execute)不支援創建檢查約束。
以上是如何在 MS Access 執行無表格 UNION 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!