Sqlserver2005 三个字段一样的数据表的数据查询及分页

时间:2021-08-22 04:41:02

公司开发的项目里面的数据库是这样的:有三个表,三个表中的字段都是一样的,现在要将三个表里面的内容都取出来。

Sqlserver2005 三个字段一样的数据表的数据查询及分页Sqlserver2005 三个字段一样的数据表的数据查询及分页Sqlserver2005 三个字段一样的数据表的数据查询及分页

这就需要使用到union方法了,当然union all 方法可以显示全部,但是如果你想要去掉重复的话就用union方法,这个要求获取的多个表中有相同的字段才可以。

代码如下:

Sqlserver2005 三个字段一样的数据表的数据查询及分页Sqlserver2005 三个字段一样的数据表的数据查询及分页
1                 select * from tb_SqlDBExam 
2     union 
3     select * from tb_SqlDB
4     union
5     select * from tb_SqlDBProbation                
View Code

结果如下:

Sqlserver2005 三个字段一样的数据表的数据查询及分页

因为要分页,所有建立一个视图比较好一点,这样我们直接操作试图这个虚表即可。

所有代码如下:

Sqlserver2005 三个字段一样的数据表的数据查询及分页Sqlserver2005 三个字段一样的数据表的数据查询及分页
--新建视图,将三个一样的数据表联合起来查询
--开发者:刘日辉
--开发时间:2013-6-16
--修改时间:2013-6-16
if object_id('V_DBSelectPage')is not null
drop view V_DBSelectPage
go
create view V_DBSelectPage
as
    select * from tb_SqlDBExam 
    union 
    select * from tb_SqlDB
    union
    select * from tb_SqlDBProbation
go
--新建存储过程进行分页显示
--开发者:刘日辉
--开发时间:2013-6-16
--修改时间:2013-6-16
if object_id('P_DBSelectPage') is not null
    drop procedure P_DBSelectPage
go
--分页显示
create procedure P_DBSelectPage
    @G_pageCount int ,--每一页要显示的行数
    @G_pageNum int,--第几页
    @G_numTotal int output --总共有多少条记录
as
    declare @temp nvarchar(6)
    declare @indexStart int
    declare @indexEnd int
    set @indexStart = ((@G_pageNum-1) * @G_pageCount) + 1
    set @indexEnd= @indexStart + @G_pageCount 
    set @G_numTotal = 
        (select count(*) from V_DBSelectPage)
    select SID as id, STitle as title,SContent as content,SWww as www  from 
    ( select row_number() over (order by SID asc) as rowNum , * from V_DBSelectPage
    )
    as t where rowNum >=@indexStart and rowNum <@indexEnd
go
/*test*/
declare @result int
exec P_DBSelectPage 3,2,@result output
print @result
go
View Code

OK,完成功能!