Maison > base de données > tutoriel mysql > Pourquoi ma requête UNION provoque-t-elle une erreur « L'entrée de requête doit contenir au moins une table ou une requête » ?

Pourquoi ma requête UNION provoque-t-elle une erreur « L'entrée de requête doit contenir au moins une table ou une requête » ?

Patricia Arquette
Libérer: 2025-01-12 09:03:46
original
319 Les gens l'ont consulté

Why Does My UNION Query Cause a

Erreur de requête UNION dans le moteur de base de données Jet/ACE : table ou requête manquante

Question :

Vous pouvez rencontrer l'erreur « L'entrée de requête doit contenir au moins une table ou une requête » lors de l'exécution d'une requête UNION qui ne contient pas de source de table.

Par exemple, la requête suivante est valide :

<code class="language-sql">SELECT "Mike" AS FName</code>
Copier après la connexion

Cependant, la tentative de joindre plusieurs lignes à l'aide de la requête suivante échoue :

<code class="language-sql">SELECT "Mike" AS FName
UNION ALL
SELECT "John" AS FName</code>
Copier après la connexion

Solution :

Ceci n'est pas un bug ou une limitation du moteur de base de données Jet/ACE. Pour effectuer une opération UNION ou UNION ALL sur plusieurs lignes, vous devez inclure la clause FROM, même si vous ne faites référence à aucun champ dans la source de données.

Exemple :

Vous pouvez utiliser un tableau avec une seule ligne comme tableau virtuel, par exemple :

<code class="language-vba">Public Sub CreateDualTable()
    Dim strSql As String
    strSql = "CREATE TABLE Dual (id COUNTER CONSTRAINT pkey PRIMARY KEY);"
    CurrentProject.Connection.Execute strSql
End Sub</code>
Copier après la connexion

Vous pouvez ensuite utiliser cette table dans une requête UNION :

<code class="language-sql">SELECT "Mike" AS FName
FROM Dual
UNION ALL
SELECT "John" AS FName
FROM Dual;</code>
Copier après la connexion

Alternative :

Vous pouvez également utiliser une instruction SELECT avec une clause TOP 1 ou WHERE pour limiter l'ensemble de résultats à une seule ligne :

<code class="language-sql">SELECT TOP 1 "Mike" AS FName
FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery

SELECT "Mike" AS FName
FROM (SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName) AS SubQuery
WHERE ID = 1</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal