有两种办法:
1,用union
假定TAB1,TAB2,TAB3,等十几个表表结构不完全相同
那么,对这十几张表分别建立相应的view,这些view按照相同的顺序取出这些表公有的字段,
(并且给这些字段指定一致的别名)
将得到的这些view,union在一起,得到一个新的view
在这个view上就可以进行你想要的查询2.用full outer joinSELECT
想要的字段
FROM TAB1
FULL OUTER JOIN TAB2 ON
关联条件
FULL OUTER JOIN TAB3 ON
关联条件
...
1,用union
假定TAB1,TAB2,TAB3,等十几个表表结构不完全相同
那么,对这十几张表分别建立相应的view,这些view按照相同的顺序取出这些表公有的字段,
(并且给这些字段指定一致的别名)
将得到的这些view,union在一起,得到一个新的view
在这个view上就可以进行你想要的查询2.用full outer joinSELECT
想要的字段
FROM TAB1
FULL OUTER JOIN TAB2 ON
关联条件
FULL OUTER JOIN TAB3 ON
关联条件
...
后一种方式没测试过
估计区别不大因为根据你给的条件:这些表是分别放各班的成绩,
那么,这些表中的数据理应没有交集
在这种极端条件下,full outer join的方式应该不会有什么高效率
甚至效率更低不过好在,比前面一个方法直接,也省事些
问题是,最好不要自己输表名,因为各库的表有可能很多,这样不是要写很长吗?
我们知道在usertables表中可以查到库中的所有表名,
只要有一种方法能够一条一条定位查询记录,就可以自动取库中表名,将它赋给一个变量,
用循环依据变量指定的表可以查询各表信息,但难度有2:
1、怎么能够一条一条定位查询记录,就可以自动取记录中的某列值?
2、查询的结果暂放哪里,等各表都查完后怎么综合?
这样的需求仅仅是为了偷懒么?
你可以用动态SQL语句来实现不过,这也不可能是一条sql搞得定的,
而且这样的语句会很复杂,极难维护
调试的困难在于:sql语句不直接出现你想要处理的字段,
口黑口黑,这是简单问题复杂化,吃力不讨好的说句老实话,
我个人认为这表结构很有问题:
既然这些表分别存着各班的成绩
班与班之间通常足够相似
想来这些表结构应该可以是一致的
为什么不把他们合成一张表,加一个班级属性(字段)作为区分,不就得了
课程表(课程号,课程名,...)
班级表(学号,班级,)select 学号,avg(成绩) 成绩 from 成绩表 a,班级表 b where a.学号=b.学号 group by 学号 hvaing avg(成绩)>=90