我有很多具有相同列的表,我需要从所有表中提取数据(例如 COUNT)。
我知道我可以创建 UNION 语句,但我有 100 个表,并且所有表名称都具有相同的格式(example_table_1.example_table_2...)。有没有办法对具有特定条件的所有表进行 UNION(在本例中,表名包含“example_table”)?
感谢您的帮助,我是这方面的新手。
最佳答案
具有相同结构的多个表几乎没有意义,如果可能,您应该修复设计。
您可以使用 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%';
关于mysql - 从不同的 SQL 表中选择数据,按表名过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994966/