Microsoft Access UNION クエリ: テーブルの要件
Microsoft Access データベースでは、単一行を取得する単純な SELECT ステートメントでは FROM
句を省略できますが、UNION
または UNION ALL
操作では、単一行の選択であっても FROM
句が必要です。
クエリの制限
UNION
句にデータ ソースを指定せずに UNION ALL
または FROM
を試行すると、「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります。」というエラーが発生します。 例:
<code class="language-sql">SELECT "Mike" AS FName UNION ALL SELECT "John" AS FName</code>
このクエリは失敗します。
問題の解決
行ベースのデータで UNION
または UNION ALL
を使用するには、ソース テーブルのフィールドが参照されているかどうかに関係なく、FROM
句が必須です。 解決策には、ダミーの単一行テーブルを作成することが含まれます:
<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>
別のアプローチでは、TOP 1
または WHERE
句を使用して、結果を既存のテーブルの 1 行に制限します。
重要な考慮事項: Jet 4 で導入された CHECK
制約は、ADO とのみ互換性があります。 DAO を使用すると、この回避策を実装するときに構文エラーが発生する可能性があります。
以上がMicrosoft Access の UNION クエリには、単一行選択であってもテーブルが必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。