Maison >base de données >tutoriel mysql >Pourquoi les requêtes UNION dans Microsoft Access nécessitent-elles une table, même pour les sélections sur une seule ligne ?

Pourquoi les requêtes UNION dans Microsoft Access nécessitent-elles une table, même pour les sélections sur une seule ligne ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 09:09:42312parcourir

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

Requêtes Microsoft Access UNION : l'exigence de table

Dans les bases de données Microsoft Access, alors que de simples instructions SELECT récupérant une seule ligne peuvent omettre la clause FROM, les opérations UNION ou UNION ALL nécessitent une clause FROM, même pour les sélections sur une seule ligne.

La limitation des requêtes

Tenter un UNION ou un UNION ALL sans source de données dans la clause FROM entraîne une erreur : "L'entrée de requête doit contenir au moins une table ou une requête." Par exemple :

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

Cette requête échouera.

Résoudre le problème

Pour utiliser UNION ou UNION ALL avec des données basées sur les lignes, une clause FROM est obligatoire, que les champs de la table source soient ou non référencés. Une solution consiste à créer une table factice à une seule ligne :

<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>

Une autre approche consiste à utiliser TOP 1 ou une clause WHERE pour limiter les résultats à une seule ligne d'une table existante.

Considération importante : La contrainte CHECK, introduite dans Jet 4, n'est compatible qu'avec ADO. L'utilisation de DAO peut produire une erreur de syntaxe lors de la mise en œuvre de cette solution de contournement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn