ホームページ >データベース >mysql チュートリアル >UNION クエリで「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります」エラーが発生するのはなぜですか?
Jet/ACE データベース エンジンの UNION クエリ エラー: テーブルまたはクエリがありません
質問:
テーブル ソースを含まない UNION クエリを実行すると、「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります」というエラーが発生する場合があります。
たとえば、次のクエリは有効です:
<code class="language-sql">SELECT "Mike" AS FName</code>
ただし、次のクエリを使用して複数の行を結合しようとすると失敗します:
<code class="language-sql">SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName</code>
解決策:
これは、Jet/ACE データベース エンジンのバグや制限ではありません。複数の行に対して UNION または UNION ALL 操作を実行するには、データ ソース内のフィールドを参照していない場合でも、FROM 句を含める必要があります。
例:
たとえば、行が 1 つだけあるテーブルを仮想テーブルとして使用できます。
<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>
このテーブルを UNION クエリで使用できます。
<code class="language-sql">SELECT "Mike" AS FName FROM Dual UNION ALL SELECT "John" AS FName FROM Dual;</code>
代替:
または、TOP 1 または WHERE 句を指定した SELECT ステートメントを使用して、結果セットを 1 行に制限することもできます。
<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>
以上がUNION クエリで「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。