Microsoft Access UNION 查询:表要求
在 Microsoft Access 数据库中,虽然检索单行的简单 SELECT 语句可以省略 FROM
子句,但 UNION
或 UNION ALL
操作需要 FROM
子句,即使对于单行选择也是如此。
查询限制
在 UNION
子句中没有数据源的情况下尝试使用 UNION ALL
或 FROM
会导致错误:“查询输入必须至少包含一个表或查询。” 例如:
<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
子句将结果限制为现有表中的单行。
重要注意事项: Jet 4 中引入的 CHECK
约束仅与 ADO 兼容。 实施此解决方法时,使用 DAO 可能会产生语法错误。
以上是为什么 Microsoft Access 中的 UNION 查询需要表,即使对于单行选择也是如此?的详细内容。更多信息请关注PHP中文网其他相关文章!