我有很多具有相同列的表,我需要从所有表中提取数据(如COUNT)。
我知道我可以创建一个UNION语句,但我有100个表,所有表名都具有相同的格式(example_table_1。example_table_2 ...)。有没有办法使具有特定条件的所有表的UNION(在这种情况下,表名包含“example_table”)?
感谢您的帮助,我是新手。
答案 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%';