有两种办法:
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.   

    前一种方式效率不高
    后一种方式没测试过
    估计区别不大因为根据你给的条件:这些表是分别放各班的成绩,
    那么,这些表中的数据理应没有交集
    在这种极端条件下,full outer join的方式应该不会有什么高效率
    甚至效率更低不过好在,比前面一个方法直接,也省事些
      

  2.   

    谢谢各位:
    问题是,最好不要自己输表名,因为各库的表有可能很多,这样不是要写很长吗?
    我们知道在usertables表中可以查到库中的所有表名,
    只要有一种方法能够一条一条定位查询记录,就可以自动取库中表名,将它赋给一个变量,
     用循环依据变量指定的表可以查询各表信息,但难度有2:
     1、怎么能够一条一条定位查询记录,就可以自动取记录中的某列值?
     2、查询的结果暂放哪里,等各表都查完后怎么综合?
      

  3.   

    “不要自己输表名”?
    这样的需求仅仅是为了偷懒么?
    你可以用动态SQL语句来实现不过,这也不可能是一条sql搞得定的,
    而且这样的语句会很复杂,极难维护
    调试的困难在于:sql语句不直接出现你想要处理的字段,
    口黑口黑,这是简单问题复杂化,吃力不讨好的说句老实话,
    我个人认为这表结构很有问题:
    既然这些表分别存着各班的成绩
    班与班之间通常足够相似
    想来这些表结构应该可以是一致的
    为什么不把他们合成一张表,加一个班级属性(字段)作为区分,不就得了
      

  4.   

    这是假设的拉,如果我直接说TAB1,TAB2,分别代表不同主题的点信息,线信息,怕是越解释越说不清楚了。
      

  5.   

    成绩表(学号,课程号,成绩,)
    课程表(课程号,课程名,...)
    班级表(学号,班级,)select 学号,avg(成绩) 成绩 from 成绩表 a,班级表 b where a.学号=b.学号 group by 学号 hvaing avg(成绩)>=90