有1到20个数据表,SQL如何获取每个表最新的第一行数据,组成一个结果集
有1到20个数据表,如何获取每个表最新的第一行数据,组成一个结果集:例如可以这样:selecttop1*fromtable1unionallselecttop1*from...
有1到20个数据表,如何获取每个表最新的第一行数据,组成一个结果集:
例如可以这样:
select top 1 * from table1
union all
select top 1 * from table2
union all
............
select top1 * from table20
但是以上SQL语句会随着表个数的增加而变得更长,有没有其他更优化的办法呢? 展开
例如可以这样:
select top 1 * from table1
union all
select top 1 * from table2
union all
............
select top1 * from table20
但是以上SQL语句会随着表个数的增加而变得更长,有没有其他更优化的办法呢? 展开
3个回答
展开全部
首先你确定这20个表的结构是一样的,这样可以写一个存储过程大致如下
我就以oracle 为例子吧
--创建一个类似table1的空表tabunion;
create table tabunion as select * from table1 where 1=2;
--存储过程如下
create or replace procedure pro_tabunion
as
begin
truncate table tabunion;
insert into tabunion select top 1 * from table1 order by xxxxtime desc;
....
insert into tabunion select top 1 * from table20 order by xxxxtime desc;
end;
---查询结果
select * from tabunion;
另外 sqlserver的话 可以直接在begin 和end 中间写入 你上面贴出的
union all 内容
我就以oracle 为例子吧
--创建一个类似table1的空表tabunion;
create table tabunion as select * from table1 where 1=2;
--存储过程如下
create or replace procedure pro_tabunion
as
begin
truncate table tabunion;
insert into tabunion select top 1 * from table1 order by xxxxtime desc;
....
insert into tabunion select top 1 * from table20 order by xxxxtime desc;
end;
---查询结果
select * from tabunion;
另外 sqlserver的话 可以直接在begin 和end 中间写入 你上面贴出的
union all 内容
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写一个存储过程遍历表名
select name from sysobjects
where xtype= 'u'
然后在存储过程里面遍历查询,这样就可以不管表数量如何增加都不用增加代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询