表:
id tid sort uname
1 1 1 aa
2 1 2 bb
3 1 9999 cc
4 1 9999 dd
5 2 9999 ee
6 3 9999 ff
7 3 1 gg
8 4 1 hh
9 4 2 ii
求数据集:
id tid sort uname
1 1 1 aa
2 1 2 bb
5 2 9999 ee
7 3 1 gg
6 3 9999 ff
8 4 1 hh
9 4 2 ii
即得到不同tid的前两位,同一tid的按sort排序。 求正解
id tid sort uname
1 1 1 aa
2 1 2 bb
3 1 9999 cc
4 1 9999 dd
5 2 9999 ee
6 3 9999 ff
7 3 1 gg
8 4 1 hh
9 4 2 ii
求数据集:
id tid sort uname
1 1 1 aa
2 1 2 bb
5 2 9999 ee
7 3 1 gg
6 3 9999 ff
8 4 1 hh
9 4 2 ii
即得到不同tid的前两位,同一tid的按sort排序。 求正解
解决方案 »
- 如何删除指定列内容的最后括号内的文字
- C++ SQL SERVER 插入变量
- 【!!!!紧接刚才的那个循环问题!!!!!】
- 这个条件该怎么写,高手请来看一眼!!多谢了!!
- 这句SQL语句怎么写
- 我看到别人写的一段SQL 语句,我运行时提示dbo的位置出现错误,我不清楚是什么原因.请高手帮忙看一下.
- asp.net连接不上MSSQL2005,连接出现错误。求远程协助。全分送上
- SQL2000事务合并的数据丢失问题
- 安装sqlserver2000时选择的是winNt验证方式,那么它的密码是我的机器名和密码吗?为什么别人访问不了了?
- 才能程序如何把Sql server中的数据转到access中?
- 大家一般是怎么处理trans的提交和回滚的啊。有标准的办法么?
- 请问这个SQL语句如何写?
from tb t
where sort in(select top 2 sort from tb where tid=t.tid order by sort)
order by tid,sort
select 1 as ID,1 as tid,1 as sort,'aa' as uname union all
select 2,1,2,'bb' union all
select 3,1,9999,'cc' union all
select 4,1,9999,'dd' union all
select 5,2,9999,'ee' union all
select 6,3,9999,'ff' union all
select 7,3,1,'gg' union all
select 8,4,1,'hh' union all
select 9,4,2,'ii'
),T2 AS (
select row_number() over ( PARTITION BY tid order by sort) Row, * from t )
SELECT * FROM t2 where Row<=2----------------
1 1 1 1 aa
2 2 1 2 bb
1 5 2 9999 ee
1 7 3 1 gg
2 6 3 9999 ff
1 8 4 1 hh
2 9 4 2 ii
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
BEGIN
DROP TABLE tba
END
GO
CREATE TABLE tba
(
id INT,
tid INT,
sort INT,
uname VARCHAR(10)
)
GO
INSERT INTO tba
SELECT 1, 1, 1, 'aa' UNION
SELECT 2, 1, 2, 'bb' UNION
SELECT 3, 1, 9999, 'cc' UNION
SELECT 4, 1, 9999, 'dd' UNION
SELECT 5, 2, 9999, 'ee' UNION
SELECT 6, 3, 9999, 'ff' UNION
SELECT 7, 3, 1, 'gg' UNION
SELECT 8, 4, 1, 'hh' UNION
SELECT 9, 4, 2, 'ii'SELECT id,tid,sort,uname
FROM tba as T
WHERE (SELECT COUNT(*) FROM tba WHERE t.tid = tid AND sort < t.sort) < 2
ORDER BY tid,sortid tid sort uname
1 1 1 aa
2 1 2 bb
5 2 9999 ee
6 3 9999 ff
7 3 1 gg
8 4 1 hh
9 4 2 ii
结果贴错了id tid sort uname
1 1 1 aa
2 1 2 bb
5 2 9999 ee
7 3 1 gg
6 3 9999 ff
8 4 1 hh
9 4 2 ii