如何在 mySQL 中创建一个空的 VIEW

Posted

技术标签:

【中文标题】如何在 mySQL 中创建一个空的 VIEW【英文标题】:How to create an empty VIEW in mySQL 【发布时间】:2012-11-19 19:47:57 【问题描述】:

我正在尝试使用我定义的列在 mysql 中创建一个空视图。

即我想要一个包含列的视图:年龄、id、性别,但包含 0 行。

提前致谢。

【问题讨论】:

视图没有行,它引用的结果集有。 【参考方案1】:

这里有一个例子:

mysql> create or replace view v_test as 
    -> select 99 as age, 
    ->   2147483647 as id, 
    ->   'F' as gender 
    -> from dual 
    -> where false;
Query OK, 0 rows affected (0.04 sec)

mysql> desc v_test;
+--------+------------+------+-----+---------+-------+
| Field  | Type       | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| age    | int(2)     | NO   |     | 0       |       |
| id     | bigint(10) | NO   |     | 0       |       |
| gender | varchar(1) | NO   |     |         |       |
+--------+------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> select * from v_test;
Empty set (0.00 sec)

【讨论】:

很好where false。或者where 1 <> 1 用另一种方言【参考方案2】:

为什么你会想要这样做是我无法理解的:

CREATE VIEW foo AS SELECT NULL AS age, NULL AS id, NULL AS gender WHERE FALSE

【讨论】:

也许问题应该是:我如何...以及为什么?尝试回答会更有趣。 哦,我敢打赌我知道...测试用例。 如果您想稍后在左连接或完全连接中使用此视图,并以编程方式确保视图与右列存在,即使它并不总是需要有数据。例如如果您在这些列上使用 ISNULL / COALESCE / NVL 或类似的功能。 +1。这很有用的一个场景是将由查询构建的视图存根到另一台服务器。如果您要导出数据库的模式脚本以组合本地集成测试数据库,那么您不希望该数据库访问服务器。比删除它和所有其他引用更容易存根。【参考方案3】:

尝试从此选择语句定义您的视图:

SELECT 5 as age, 10 as id, 'M' as gender
WHERE age = 0

这将为您提供正确的列类型

【讨论】:

以上是关于如何在 mySQL 中创建一个空的 VIEW的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在与其他查询的事务中创建 VIEW?

如何在 SwiftUI 中创建一个获取 View 并返回自定义结果的函数?

如何在代码中创建与 @"H:|-10-[view]" 完全相同的 NSLayoutConstraint 对象?

如何在 MySQL 中使用 PHP 递归地从子元素为空的祖先中获取值

如何在 swiftUI 中创建一个普通视图

如何在Dagger 2中创建包含DAO对象的View Model?