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