怎么将两个数据结果合并?

bakdfkuk 2009-11-27 02:44:40
对一个表,我已经建立了两个存储过程,一个存储过程选择了五条数据,另一个存储过程选择了另外的五条数据,现在我想把这两个存储过程获得的数据合并成一个结果,那么我在SQL中应该怎么做呢,是不是可以用视图,然后把两个数据合并?
如:第一个存储过程是top5hot,第二个存储过程是top5new现在我想把这两个存储过程得到的结果放在一个有10行数据的表中,要怎么设置?因为这两个存储过程都比较复杂,不过获得的字段都是一致的,据说视图很灵活,不一致的字段也能组成表是吗?在上面我的我的这个问题中还有没有必要用存储过程?
...全文
153 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
icelovey 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bakdfkuk 的回复:]
用临时表的话它的数据能不能在做页面的时候引用?临时表跟一般的表有什么差别啊???
[/Quote]
临时表在会话结束后会自动删除~~
bakdfkuk 2009-11-27
  • 打赏
  • 举报
回复
如果两个存储过程获得的字段数不是一样的话,那么用临时表还可以吗?
bakdfkuk 2009-11-27
  • 打赏
  • 举报
回复
用临时表的话它的数据能不能在做页面的时候引用?临时表跟一般的表有什么差别啊???
华夏小卒 2009-11-27
  • 打赏
  • 举报
回复
--> 测试数据: tb
if object_id('tb')is not null drop table tb
go
create table tb(tb1Column1 varchar(1),tb1Column2 int,tb1Column3 varchar(2))
insert into tb
select 'a',1,'a1' union all
select 'a',2,'a2' union all
select 'a',3,'a3' union all
select 'a',3,'a4' union all
select 'a',4,'a5' union all
select 'b',1,'b2' union all
select 'b',1,'b4' union all
select 'b',1,'b6' union all
select 'b',1,'b1'


--> 测试数据:tb2
if object_id('tb2')is not null drop table tb2
go
create table tb2(tb1Column1 varchar(1),tb1Column2 int,tb1Column3 varchar(2))

if object_id('pp')is not null drop proc pp
go

create proc pp ---proc
as
select top 3 * from tb
go


---------------------------------------
insert tb2 exec pp

select * from tb2

tb1Column1 tb1Column2 tb1Column3
---------- ----------- ----------
a 1 a1
a 2 a2
a 3 a3

(3 行受影响)
Undeadxiaoqiang 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bakdfkuk 的回复:]
create table hotnews
insert hotnews exec top5hot
insert hotnews exec top5new
结果不行,提示hotnews附近有错误,是不是还要带上什么参数?
[/Quote]
create table hotnews(字段1 字段类型,……)
建议楼主用临时表 create table #hotnews
bakdfkuk 2009-11-27
  • 打赏
  • 举报
回复
存储过程调用存储过程要怎么弄?听起来不错,但也不会,呵呵
bakdfkuk 2009-11-27
  • 打赏
  • 举报
回复
create table hotnews
insert hotnews exec top5hot
insert hotnews exec top5new
结果不行,提示hotnews附近有错误,是不是还要带上什么参数?
快乐_石头 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 js_szy 的回复:]
建一个临时表

insert #t exec top5hot

insert #t exec top5new
[/Quote]
我看行~~
liangCK 2009-11-27
  • 打赏
  • 举报
回复
create table #tmp(xx xx,xxx xx)

insert #tmp exec sp_1
insert #tmp exec sp_2

#tmp就有这10条记录了.
icelovey 2009-11-27
  • 打赏
  • 举报
回复
如果你存储过程里面单单是SELECT而没有用其他临时表的话, 可以考虑直接用视图完成
SELECT XX ... FROM TB1
UNION ALL
SELECT YY .. . FROM TB2
--小F-- 2009-11-27
  • 打赏
  • 举报
回复
存储过程调用存储过程 返回结果集吧
闲思暇想 2009-11-27
  • 打赏
  • 举报
回复
把查询结果用union连起来应该就可以了吧。
xuam 2009-11-27
  • 打赏
  • 举报
回复
视图,过程,新表 都可以!
华夏小卒 2009-11-27
  • 打赏
  • 举报
回复
建一个临时表

insert #t exec top5hot

insert #t exec top5new
chuifengde 2009-11-27
  • 打赏
  • 举报
回复
2000中存储过程的结果集要赋给表,再来处理表

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧