在单个数据库中创建大量表是非常糟糕的。我现在明白了。 所以我想通过创建新的单个表来解决这个问题。所以我想将所有表的所有行都提取到单个表中。
我到处搜索但没有解决方案,所以需要帮助
这是我的情况:
每个表都有以下列
id
name
flag
poststatus
我可以在查询下面运行以从两个表中获取数据:
SELECT * FROM table1 WHERE poststatus = '2' UNION SELECT * FROM table2 WHERE poststatus = '2';
但这仅适用于两个表,我必须为近5000个表运行查询。
有没有更好的方法来获取单个查询或任何其他想法中的所有数据..
谢谢。
答案 0 :(得分:0)
如果您手头有PHP(就像标签建议的那样),您可以创建一个小脚本,为您创建所有5000个SELECT语句:
for($i=1;$i<=5000;$i++)
$sql.="INSERT INTO combined (name, flag, poststatus) SELECT name, flag, poststatus FROM table".$i." WHERE poststatus=2\n";
file_put_contents('combine.sql', $sql);
poststatus ='2';
答案 1 :(得分:0)
执行替换架构和like
表达式。
set group_concat_max_len = 1048576;
select
concat('select * from ',
group_concat(table_name separator ' where poststatus = ''2'' union select * from ')
) as query
from information_schema.tables
where table_schema = 'database_name' and table_name like 'table%'