在 MySql 中创建一个或多个视图的 UNION

Posted

技术标签:

【中文标题】在 MySql 中创建一个或多个视图的 UNION【英文标题】:Create UNION with one or more views in MySql 【发布时间】:2019-05-06 14:58:13 【问题描述】:

我试图获得一个查询和一个视图或一个视图和一个视图的联合。但是在 mysql 中这样做会返回一个ER_PARSE_ERROR

假设我有一个名为 B_SAL 的视图,用于在特定操作之前查看特定数据集的状态。

   CREATE OR REPLACE VIEW B_SAL AS 
       SELECT * FROM EMP ORDER BY EMP.COMM;

在该操作之后,我想获取B_SALUNION ALL 和数据集的当前状态,在本例中为EMP

       (SELECT * FROM EMP ORDER BY EMP.COMM)
       UNION ALL
       B_SAL

【问题讨论】:

样本数据和期望的结果真的很有帮助。 union all 听起来没什么用。 您必须从视图中进行选择,而不能只是在联合之后将视图名称放入其中。 @GordonLinoff:期望的结果很大程度上取决于这两个查询之间的操作,另一个操作加上一些示例数据会使这个问题有点太长,问题会失去焦点。 【参考方案1】:

您需要从该视图中进行选择,例如

SELECT * FROM EMP
UNION ALL
SELECT * FROM B_SAL;

但是上面的 union 并不是很好的做法,因为我们是在做SELECT *,而不是明确列出我们想要使用的列。更好的版本应该是这样的:

SELECT col1, col2, col3 FROM EMP
UNION ALL
SELECT col1, col2, col3 FROM B_SAL;

【讨论】:

谢谢,这太明显了!

以上是关于在 MySql 中创建一个或多个视图的 UNION的主要内容,如果未能解决你的问题,请参考以下文章

如何查看用于在 phpMyAdmin 或其他程序中创建视图的原始 MySQL?

SQL如何把查询出来的多个表创建成一个临时表

使用以下数据库布局在 mysql 中创建视图的最佳方法是啥?

在 Android Studio 中创建一个包含多个对象的列表视图

如何在MySQL中创建视图

如何使用 UNION 和子 SELECT 从查询构造 MySQL 视图