从表名筛选的不同SQL表中选择数据

时间:2014-02-24 17:41:55

标签: mysql sql

我有很多具有相同列的表,我需要从所有表中提取数据(如COUNT)。

我知道我可以创建一个UNION语句,但我有100个表,所有表名都具有相同的格式(example_table_1。example_table_2 ...)。有没有办法使具有特定条件的所有表的UNION(在这种情况下,表名包含“example_table”)?

感谢您的帮助,我是新手。

1 个答案:

答案 0 :(得分:1)

具有相同结构的多个表几乎没有意义,如果可能,您应该修改设计。

您可以使用INFORMATION_SCHEMA来获取计数,或单独列出表格(然后您可以使用sql语句连接):

 SELECT SUM(table_rows) 
 FROM INFORMATION_SCHEMA.TABLES 
 WHERE TABLE_SCHEMA = '{your_db}'
     AND table_name LIKE '%example_table%';

如果您需要精确计数,则应使用CONCAT()来构建COUNT()查询,因为INFORMATION_SCHEMA可能不可靠:

SELECT CONCAT('SELECT "',table_name,'" AS table_name, COUNT(*) AS ct FROM ',table_schema,'.',table_name,' UNION') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '{your_db}' 
  AND table_name LIKE '%example_table%';
相关问题