如何在 MySQL 中使用不相关的表创建视图

Posted

技术标签:

【中文标题】如何在 MySQL 中使用不相关的表创建视图【英文标题】:How to create a view in MySQL with unrelated tables 【发布时间】:2016-03-14 09:43:10 【问题描述】:

我在 mysql 中有 4 个不同的表,没有匹配标准和外键,为了一些特殊需要和更好的性能,我需要在一个 MySQL VIEW 中重新组合所有这些数据。

这些表的结构是相似的,像这样(但记住即使是相同的字段也没有连接):

table1 (id, name, date, price, description)
table2 (id, type, date, price, note)
table3 (id, name, date, price, note)
table4 (id, name, date, price, description)

有没有一种方法可以创建一个包含 4 列的视图,将以前表的数据分组?我不能使用连接,因为就像我之前说的那样,这些数据之间没有联系,这就是我对视图的看法。我什至无法创建包含所有这些字段的单个表,因为这对我的应用程序的其余部分来说意味着。

我需要创建 4 个这样的字段:日期、名称、价格、描述。 例如 price 将包含每个 table1..to table4 的价格。

【问题讨论】:

重复元组怎么办? <name, date, price, description> 添加一些示例表数据,以及预期的结果。 【参考方案1】:

如果允许此元组<name, date, price, description> 重复,则可以使用UNION ALL,如果您不想在视图中允许重复,则使用UNION 而不是UNION ALL

DROP VIEW IF EXISTS combinedTableView ;

CREATE VIEW combinedTableView AS 

SELECT 
`name`,
`date`,
price,
description
FROM table1

UNION ALL

SELECT 
`name`,
`date`,
price,
description
FROM table2

UNION ALL

SELECT 
`name`,
`date`,
price,
description
FROM table3

UNION ALL

SELECT 
`name`,
`date`,
price,
description
FROM table4

【讨论】:

以上是关于如何在 MySQL 中使用不相关的表创建视图的主要内容,如果未能解决你的问题,请参考以下文章

mysql---视图

PHPMaker,如何创建视图 mysql

mysql视图的操作

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

133 MySQL视图事务索引(都很重要)

mysql中的视图