MySQL:选择多个表

时间:2009-11-14 19:10:47

标签: mysql

我想用MySQL选择多个表。 但我不确切地知道它们的名称,但它们具有完全相同的结构。

例如:

table_345:
id || row_1 || row_2 || row_3

我希望有类似的东西:

SELECT `id` FROM table_*

2 个答案:

答案 0 :(得分:3)

如果您在MySQL数据库中使用PHP,则可以使用mysql_list_tables()获取数据库中的表列表。然后可以使用strpos()轻松过滤该列表。获得表格列表后,可以使用SQL UNION组合表格中的结果集。

我希望你有一个很好的理由选择这种设计,因为它可能变得非常丑陋,非常快。

祝你好运。

答案 1 :(得分:1)

在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