公司开发的项目里面的数据库是这样的:有三个表,三个表中的字段都是一样的,现在要将三个表里面的内容都取出来。
这就需要使用到union方法了,当然union all 方法可以显示全部,但是如果你想要去掉重复的话就用union方法,这个要求获取的多个表中有相同的字段才可以。
代码如下:
1 select * from tb_SqlDBExam 2 union 3 select * from tb_SqlDB 4 union 5 select * from tb_SqlDBProbation
结果如下:
因为要分页,所有建立一个视图比较好一点,这样我们直接操作试图这个虚表即可。
所有代码如下:
--新建视图,将三个一样的数据表联合起来查询 --开发者:刘日辉 --开发时间: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
OK,完成功能!