现在有一个表 数据如下 :
id home num Time
12 中国 32 2000-12:00:00
23 美国 34 2000-12:00:00
24 法国 12 2000-12:00:00
25 日本 12 2000-12:00:00
34 英国 45 2000-12:00:00
35 中国 32 2000-12:00:00
36 美国 34 2000-12:00:00
37 法国 12 2000-12:00:00
38 日本 12 2000-12:00:00
39 英国 45 2000-12:00:00
。。
等等..好多数据..
当然国家不是固定这几个.. 可能还会有别的国家.
我现在想 查出每个国家的前十条数据 改怎么查..
也就是 中国的前十条..美国的前十条..等等....要显示在一个表里..不要用union...
id home num Time
12 中国 32 2000-12:00:00
23 美国 34 2000-12:00:00
24 法国 12 2000-12:00:00
25 日本 12 2000-12:00:00
34 英国 45 2000-12:00:00
35 中国 32 2000-12:00:00
36 美国 34 2000-12:00:00
37 法国 12 2000-12:00:00
38 日本 12 2000-12:00:00
39 英国 45 2000-12:00:00
。。
等等..好多数据..
当然国家不是固定这几个.. 可能还会有别的国家.
我现在想 查出每个国家的前十条数据 改怎么查..
也就是 中国的前十条..美国的前十条..等等....要显示在一个表里..不要用union...
解决方案 »
- ASP.NET修改AD用户密码的权限问题,急请高手帮忙看一下!!!!
- js的setinterval最长时间间隔能设多久?
- 在线急等 调试JS弹出“没用可用于当前位置的源代码”
- asp.net 有关将excel数据导入到数据库的某个表,怎么做?(学生各位老师求教)
- 怎么在后台代码里刷新iframe父页面
- 我的网站上的注册页面中的password型的文本框在本地能读取并插入到数据库中 但传到网上插入到数据库中是空的
- 学了一段时间asp.net2.0了,这个小问题还不会,真郁闷呀.
- !!"拒绝访问",怎麽解决??
- 各位高手,请问如何在ASP.NET下,设计类似ASP的INPUTBOX("FF:","FF")输入框?
- 利用AjaxControlToolkit的自动补全功能 网页加载速度奇慢
- 请教一段script脚本的作用
- 问一个正则表达式
我觉得这样就可以了,后面的不用了吧
2.遍历这个表取出国家和t比较(游标或者循环),然后再拼sqlsql=sql+'select top 10 id home num Time from t where home='日本' group by '日本' Union'不使用union很难实现。如果你不用这种方法,就坐等其他高手解答吧
你这种只是取前10条,而不是每个国家的。还是要构造sql
FROM
(
SELECT rid=ROW_NUMBER() OVER(PARTITION BY home ORDER BY id),*
FROM #T
) AS T
WHERE rid<=10
into #temp from table order by home,num
select*from #temp where num<=10
select
*
from (select row_number() over(partition by home order by home asc,id asc) as grp_no,
id,
home
from a) t
where t.grp_no <=10
2005和ORACLE已经这么像了?一直用ORACLE的人与时代脱节。。
select top 10 id,home,max(num),max(Time) from Table group by id,home
select DataTABLE.* from TABLE as DataTABLE left join(select home,(select top 1 id from(select top 10 id from TABLE where home=HomeTABLE.home order by id)as IdTABLE order by id desc)as maxId from(select distinct(home)as home in TABLE)as HomeTABLE)as WhereTABLE where DataTABLE.home=WhereTABLE.home and DataTABLE.id<=WhereTABLE.maxId order by home,id
select * from
( select *,ROW_NUMBER() over (partition by
deptid order by isManageSet desc,workid desc ) cid
from v_gzdtInfo
where
isManageSet is null or(isManageSet not in (1))
and workStartTime <='2010-06-18'
and workEndTime >='2010-06-18'
) d where cid <=10
自己修改下 能用 sql2005
wyq29和squall_biming 思路差不多..wyq29后面给出的几个也不错..很感谢..sbwwkmyd 后面几个可以. 但是速度感觉上有点慢..sql高手好多..我得学习了..哈哈..
if object_ID('TextTable') is null
create Table TextTable
(
ID int IDENTITY(1,1),
home varchar(10),
num int,
CTime Varchar(10)
)
GOdelete from TextTable
GODECLARE @i int
set @i=0
while @i<50
begin
insert into TextTable(Home,Num,Ctime)
select '中国',@i,'2000-01-01'
union all
select '美国',@i,'2000-01-02'
union all
select '德国',@i,'2000-01-03'
set @i=@i+1
endselect * from TextTable
GOselect * from TextTable a where
exists( select * from (select top 10 ID,Home from TextTable where home=a.Home order by ID) b where home=a.home and a.ID<=B.ID )
order by Home,ID
GO
declare @tb as Table
(
ID int IDENTITY(1,1),
home nvarchar(10),
num int,
CTime Varchar(10)
)
DECLARE @i int
set @i=0
while @i<50
begin
insert into @tb(Home,Num,Ctime)
select N'中国',@i,'2000-01-01'
union all
select N'美国',@i,'2000-01-02'
union all
select N'德国',@i,'2000-01-03'
set @i=@i+1
end
select distinct b.* from @tb a
cross apply
(select top 10* from @tb b where b.home=a.home )as b
order by 2