当前位置: 代码迷 >> ASP.NET >> 多个表的合并后(union all),怎么获得前 10 条记录?
  详细解决方案

多个表的合并后(union all),怎么获得前 10 条记录?

热度:4417   发布时间:2013-02-25 00:00:00.0
多个表的合并后(union all),如何获得前 10 条记录???
比如如下两个表合并后,我如何能用得到钱10条语句:
select 姓名=aname,支出钱=amoney,收入钱='',时间=atime from a union all select bname,支出钱='',收入钱=bmoney,时间=btime from b order by 时间

声明我希望一句话就能搞定,不想用存储过程`~~~

------解决方案--------------------------------------------------------
select 姓名=aname,支出钱=amoney,收入钱='',时间=atime from a 
inner join 
(select top 10 [time]
from
(select 
atime as [time] from a 
union 
select btime as [time] from b order by [time]) c)
d on a.atime = d.[time]

union
select bname,支出钱='',收入钱=bmoney,时间=btime from b 
inner join 
(select top 10 [time]
from
(select 
atime as [time] from a 
union 
select btime as [time] from b order by [time]) c)
d on b.btime = d.[time]
------解决方案--------------------------------------------------------
SQL code
SELECT TOP 10 * FROM (select 姓名=aname,支出钱=amoney,收入钱='',时间=atime from a union all select bname,支出钱='',收入钱=bmoney,时间=btime from b order by 时间 ) as temp
------解决方案--------------------------------------------------------
楼上的应该可以
------解决方案--------------------------------------------------------
select top 10 * from 
(select 姓名=aname,支出钱=amoney,收入钱='',时间=atime from a union all select bname,支出钱='',收入钱=bmoney,时间=btime from b order by 时间 
) as a
------解决方案--------------------------------------------------------
select top 10 * from (select 姓名=aname,支出钱=amoney,收入钱='',时间=atime from a union all select bname,支出钱='',收入钱=bmoney,时间=btime from b )
as AA
order by 时间