我想用MySQL选择多个表格。 但我不知道他们的名字,但他们都有相同的结构。MySQL:选择多个表格
例如:
table_345:
id || row_1 || row_2 || row_3
我想有这样的事情:
SELECT `id` FROM table_*
我想用MySQL选择多个表格。 但我不知道他们的名字,但他们都有相同的结构。MySQL:选择多个表格
例如:
table_345:
id || row_1 || row_2 || row_3
我想有这样的事情:
SELECT `id` FROM table_*
如果你正在使用PHP和MySQL数据库,您可以使用mysql_list_tables()获得在表的列表中选择数据库。然后可以使用strpos()轻松筛选该列表。获得表格列表后,可以使用SQL UNION合并表格中的结果集。
我希望你有一个很好的理由选择这种设计,因为它可能变得非常难看,非常快。
祝你好运。
在MySQL中,您可以使用information_schema.TABLES
(表名在MySQL中区分大小写)来检索表的列表。然后,您可以构建一个动态查询并使用EXECUTE STMT
运行它。下面是一个例子:
SET @query = '';
SELECT *
FROM (
SELECT @query := CONCAT(@query,if(@query = '','',' union all '),
'select * from ', T.`TABLE_NAME`)
FROM information_schema.TABLES T
WHERE TABLE_SCHEMA = 'YourDatabaseName'
) sub
WHERE 1=0;
PREPARE STMT FROM @query;
EXECUTE STMT;
P.S.这样的多行语句在查询浏览器中不起作用,但它们在命令行中执行。将这些命令保存在一个名为sqlcommands.txt
的文件中,您可以像这样运行它们:
mysql -u user -p password dbname < sqlcommands.txt