Heim >Datenbank >MySQL-Tutorial >Warum erfordern UNION-Abfragen in Microsoft Access eine Tabelle, selbst für Einzelzeilenauswahlen?
Microsoft Access UNION-Abfragen: Die Tabellenanforderung
Während in Microsoft Access-Datenbanken bei einfachen SELECT-Anweisungen zum Abrufen einer einzelnen Zeile die FROM
-Klausel weggelassen werden kann, erfordern UNION
- oder UNION ALL
-Vorgänge eine FROM
-Klausel, selbst für Einzelzeilenauswahlen.
Die Abfragebeschränkung
Der Versuch eines UNION
oder UNION ALL
ohne eine Datenquelle in der FROM
-Klausel führt zu einem Fehler: „Die Abfrageeingabe muss mindestens eine Tabelle oder Abfrage enthalten.“ Zum Beispiel:
<code class="language-sql">SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName</code>
Diese Abfrage schlägt fehl.
Behebung des Problems
Um UNION
oder UNION ALL
mit zeilenbasierten Daten zu verwenden, ist eine FROM
-Klausel obligatorisch, unabhängig davon, ob auf die Felder der Quelltabelle verwiesen wird. Eine Lösung besteht darin, eine einzeilige Dummy-Tabelle zu erstellen:
<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>
Ein anderer Ansatz besteht darin, TOP 1
oder eine WHERE
-Klausel zu verwenden, um die Ergebnisse auf eine einzelne Zeile aus einer vorhandenen Tabelle zu beschränken.
Wichtige Überlegung: Die in Jet 4 eingeführte CHECK
-Einschränkung ist nur mit ADO kompatibel. Die Verwendung von DAO kann bei der Implementierung dieser Problemumgehung zu einem Syntaxfehler führen.
Das obige ist der detaillierte Inhalt vonWarum erfordern UNION-Abfragen in Microsoft Access eine Tabelle, selbst für Einzelzeilenauswahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!