我想要合并并查询数据库中“大量”表中的数据(目前正在增加,但超过 1000 个大关)。并非每个表都有完全相同的列,但它们共享一个核心。
有没有一种方法可以在不使用某种大规模JOIN
命令的情况下解决这个问题?理想的输出将包括当前在任何单个表中的每一列,对于表中不包含该列的任何行为空白。
最佳答案
听起来您想要一个union all
,而不是join
:
select t1.col1, t1.col2, . . . , NULL as coln
from table1 t1 union all
select t2.col1, NULL as col2, . . . t2.coln
from table t2 union all
. . .
您必须列出所有表的所有列。您可以使用电子表格来生成代码。或者,您可以从 information_schema.columns
中提取列来排列 union
。
当使用数千个表时,您可能会开始达到 MySQL 的限制。在数据库中有这么多相似的表听起来是一个非常糟糕的主意。您可能想重新审视您的数据模型。
关于mysql - 在一个数据库中查询/连接 1000 多个 mySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988547/