日期:2014-05-16  浏览次数:20669 次

select语句如何对一个数据库中所有相同的表操作?
有一个MYSQL数据库,数据库名为test_db,此数据库中有30个表,其中28个表名为table1,table2,table3……table28,另外的2个表名为table88,talbe99。

这28个表的结构是一样的,假设为   ID,   NAME   ,   SEX   ,   我现想用一个select   语句查询该test_db数据库的28个表中SEX为“男”的所有数据,应该如何写这个select语句?

我不可能这样吧:   select   *   from   test_db.table1,test_db.table2,(写尽这28个表名)   where   SEX   =   '男 '。     有什么好方法吗?

应该怎样对数据库中所有相同表的操作?




------解决方案--------------------
写个存储过程对28个表进行循环操作。
------解决方案--------------------
动态从系统表中获取这30个表的表名,生成类似如下格式的SQL:

select * from T1 where ...
union all
select * from T2 where ...
union all
...
------解决方案--------------------
动态拼写表名,然后 from 动态添加表即可。
每个都用 union 即可了。