所以我没有MYSQL专家,我真的需要一些帮助,试图弄清楚这一点。我目前有超过60桌,我想加入到一个表中,没有这些表中的数据相互匹配,所以我需要的所有表的行成一个单一的一个。他们有相同的模式,如果这是正确的说法,基本上是相同的格式。他们都最终在同一后缀“_dir”。
我认为可以工作了这样的事情,
获取所有表相同的后缀下,对于表列表中加入或插入行MAIN_TABLE每个表。
我不知道如何在这个MySQL或如果它甚至有可能做到。我知道我可以使用,
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_dir%'
获得所有表的列表,但我该如何使用这每个表遍历?
下面是输入数据的例子:
表格1:
| NAME | INST_NAME | Drop
| data 1 | 'this is an example instance1 | 1.5
| data 1 | 'this is an example of instance2| 2.0
表2:
| NAME | INST_NAME | DROP
| data 2 | 'this is an example instance1 | 3.0
| data 2 | 'this is an example of instance2| 4.0
输出表:
| NAME | INST_NAME | DROP
| data 1 | 'this is an example instance1 | 1.5
| data 1 | 'this is an example of instance2| 2.0
| data 2 | 'this is an example instance1 | 3.0
| data 2 | 'this is an example of instance2| 4.0
请注意,我有超过60桌做到这一点不只是2.也有在同一个数据库中不同的其他信息表,所以我不能只是加入所有表在那里。
你真的需要修复你的数据结构。你不应该在表中存储的数据具有相同的结构 - 这些信息都应该进入一个表。然后,你就没有这个问题。
现在,您可以构建的所有数据的视图。您可以生成与这样的视图中的代码:
SELECT CONCAT('CREATE VIEW vw_dir AS',
GROUP_CONCAT(REPLACE('SELECT NAME, INST_NAME, `DROP` FROM [T]', '[T]'), TABLE_NAME)
SEPARATOR ' UNION ALL '
)
) as create_view_sql
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%_dir%';
再取SQL,运行它,你就会有一个名为vw_dir
视图。添加了一个表,在下一次你需要删除该视图,然后重新创建它。
有了这个解决了,你现在可以开始考虑如何将所有数据放在一个表中,而无需中间表弄乱你的数据库。