2009-11-14 109 views
0

我想用MySQL选择多个表格。 但我不知道他们的名字,但他们都有相同的结构。MySQL:选择多个表格

例如:

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

我想有这样的事情:

SELECT `id` FROM table_* 

回答

3

如果你正在使用PHP和MySQL数据库,您可以使用mysql_list_tables()获得在表的列表中选择数据库。然后可以使用strpos()轻松筛选该列表。获得表格列表后,可以使用SQL UNION合并表格中的结果集。

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

祝你好运。

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