我想使用 UNION_ALL 组合来自不同模式的表。这些表具有相同的架构,就像在这个玩具示例中一样:
class1.names
+----------+
| id | name|
+----------+
| 1 | jon |
| 2 | ann |
| 3 | rob |
class2.names
+----------+
| id | name|
+----------+
| 1 | rav |
| 2 | meg |
| 3 | mat |
我可以将类列表硬编码到一个数组中,或者更优选地,使用如下查询获取它们:
SELECT DISTINCT(TABLE_SCHEMA)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
我想像这样组合表格:
SELECT *, 'class1' as class FROM class1.names
UNION_ALL
SELECT *, 'class2' as class FROM class2.names
UNION_ALL
etc.
但是在模式级查询中会有更多的事情发生,SELECT *, 'class1'...
所以我想使用循环或其他一些系统方法来做到这一点。
我正在查看动态 sql 或使用带有 'UNION_ALL' 的 GROUP_CONCAT 作为分隔符,但我无法取得进展。
附录:我知道这是糟糕的架构设计,但我现在对此无能为力。