项目的数据库中有2张表,这两张表有部分差别(几个字段不一样)。
我举例来说吧,假设有个本科生表,一个研究生表,属性大部分相同的,但是一两个字段有不同。
我不清楚怎么设计的数据库,这是一个现成的项目需要维护。
我现在只能在这个基础上改。现在要增加一个人员查询,查询结果是从这两个表来进行的。
所以得综合两张表才能得到查询结果。(当然是两个表都有的属性)。由于结果很多,所以还需要做分页,分页的页面大小固定,页数根据2张表查询到的结果来除以页面大小决定。到下一页的时候,又要综合两张表来进行。这种情况下如何来查询?我曾考虑过用一个临时表来缓冲数据,把两张表的数据汇总到一起。
但这样这个临时表可能就会很大。请大家给一个可行的思路,谢谢了。我使用的是SQL Express2005

解决方案 »

  1.   

    select * from tb1
    union all
    select * from tb2 
      

  2.   

    比较两张表的不同然后做汇总,
    例如表一
    col1  col2 col3表二
    col1  col2 col4
    select col1,col2,col3,null as col4 from 表一
    union all
    select col1,col2,null,col4  from 表二
      

  3.   

    我这就是一个临时的结果啊?最多你加个order by 就是了
      

  4.   

    create view v_data
    as
    select * from tb1
    union all
    select * from tb2
      

  5.   

    --查询分页数据
    declare @PageSize int, @PageNo int
    select @PageSize = 100, @PageNo = 3 --每100条记录为一页, 查询第3页的数据select * from
    (
    select rowno = ROW_NUMBER() over(order by getdate()), * from
    (
    select same_field1, same_field2, same_field3, same_field4 from tb1
    union all --去除重复则用union
    select same_field1, same_field2, same_field3, same_field4 from tb2
    ) a
    ) b
    where rowno between (@PageSize*(@PageNo-1)+1) and @PageSize*@PageNo