在mysql中,如何根据不同的表动态创建视图?

Posted

技术标签:

【中文标题】在mysql中,如何根据不同的表动态创建视图?【英文标题】:In mysql, how to dynamically create a view based on different tables? 【发布时间】:2012-09-22 07:24:12 【问题描述】:

阅读标题可能不太清楚。我是 mysql 的新手,现在我有一个以每天的日期命名的表,所以每天表的名称都不同。

例如,现在的表格:

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytab_20120922 |
+----------------+

现在我创建一个视图,用于从今天的表格中选择所有内容(mytab_20120922):

mysql> create view myview as (select * from mytab_20120922);

明天,表的名字会不一样:

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| mytab_20120923 |
+----------------+

那么使用myview查看mytab_20120923中的所有数据是错误的。有什么好主意可以解决这个问题吗?

【问题讨论】:

多个表结构相同是错误的设计。将“xxxx”作为列添加到原始表中,将所有数据存储在一个表中,并使用 WHERE 条件创建视图。 @AlexMonthy xxxxx 在这里表示它们是表之间的相同字符串,也许我应该将xxxxx 更改为更具体的名称:) 同意 Alex 的观点,这不是一个正确的设计。你会用存储过程来代替吗?如果是这样,您可以将 SELECT 语句动态构造为字符串并 exec 它。 @AlexMonthy Eh..也许你是对的,我正在考虑更好的设计.. 【参考方案1】:

Aldo 我认为这是一个床设计,应该按照 cmets 中的建议更改设计,如果你真的想这样做,可以通过创建一个动态创建一个选择的 MySql Prepared Statements 来使用 Stored Procedure从今天的表中执行它,然后从该存储过程中进行选择。

【讨论】:

以上是关于在mysql中,如何根据不同的表动态创建视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Google bigquery 中为多个动态表创建授权视图?

如何根据设置选择在选项卡栏视图中创建动态更新的视图?

如何根据 Oracle 中用户的输入创建动态视图?

6.mysql视图

如何根据用户查询数据在视图中设置动态“位置”?

mysql 视图