2009-11-14 138 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