mysql - 从不同的 SQL 表中选择数据,按表名过滤

标签 mysql sql

我有很多具有相同列的表,我需要从所有表中提取数据(例如 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/

相关文章:

php - mysql 表中没有重复值,但某些回显值重复

mysql - 使用前缀和总和连接表

mysql - 从注释字段中有选择地选择日期

sql - 在 postgres select 查询中可以插入 ascii 十进制字符吗?

sql - 使用变量查询

javascript - 如何使用 DOM2 方法在 Javascript 中格式化 JSON?

SQL:中断查询

php - 如何制定连接多个表的查询

php - mysql_num_row() 错误

java - 如何将oracle数据库中的值汇总到java中?