如何在 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 中创建一个获取 View 并返回自定义结果的函数?
如何在代码中创建与 @"H:|-10-[view]" 完全相同的 NSLayoutConstraint 对象?