由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 问一个sql查询语句的问题
相关主题
求助:如何ColumName 作为变量放入query问一个SQL Server的问题
请各位帮我看看这个最简单的Stored Procedure (转载)SQL2005 如何獲取所有 user login database mapping
誰來解釋一下這是什麼原理这个query怎么写?
问个 sp_send_dbmail 的问题error of executing SQL query of string concatenation (转载
请教一个SQL的问题抱怨一下 数据库 里头的一些不严谨。
请教一个query 优化的问题(filter keyword)SQL 2008 Group By Question
请教set和select 的区别朋友圈遍历问题
请问sql server里面怎么输出变量到文本文件?How to write this query
相关话题的讨论汇总
话题: select话题: set话题: order话题: tbl话题: varchar
进入Database版参与讨论
1 (共1页)
b******n
发帖数: 1629
1
select top n * from table order by column
是返回前n行,有没有办法返回荣国column排序的第n1到n2行这个范围?
B*****g
发帖数: 34098
2
呵呵,partition by

【在 b******n 的大作中提到】
: select top n * from table order by column
: 是返回前n行,有没有办法返回荣国column排序的第n1到n2行这个范围?

b******n
发帖数: 1629
3
我要做的只是一个数字,比如第一次取1~1000000,第二次取1000001~2000000,这个
partition by能搞定么,ms不行?

【在 B*****g 的大作中提到】
: 呵呵,partition by
p********l
发帖数: 279
4
You can try to use CTE and row_number:
WITH TableRN AS
(
SELECT ROW_NUMBER() OVER(ORDER BY col1) AS rownum,
col1,
col2
FROM Table1
)
SELECT rownum, col1, col2
FROM TableRN
WHERE rownum BETWEEN n1 AND n2
ORDER BY rownum;

【在 b******n 的大作中提到】
: select top n * from table order by column
: 是返回前n行,有没有办法返回荣国column排序的第n1到n2行这个范围?

y****9
发帖数: 144
5
This is a well-know SQL problem: pagenation.
http://sqlserverplanet.com/sql-server/best-sql-server-paginatio
There are two methods described there. the second one is CTE. the poster
thinks the first one is better.
B*****g
发帖数: 34098
6
google "partition by", hehe
http://msdn.microsoft.com/en-us/library/ms189461.aspx

【在 b******n 的大作中提到】
: 我要做的只是一个数字,比如第一次取1~1000000,第二次取1000001~2000000,这个
: partition by能搞定么,ms不行?

i*****w
发帖数: 75
7
Simple SQL scripts should be able to handle this situation:
Set NOCOUNT ON
CREATE TABLE #tbl(id INT, LineItem Varchar(100))
DECLARE @i INT
SET @i =1
WHILE @i <= 2000
BEGIN
INSERT INTO #tbl
SELECT @i, 'This is line ' + CAST(@i as varchar(20))
SET @i = @i + 1
END
Declare @n1 varchar(20), @n2 varchar(20)
SET @n1 = '50'
SET @n2 = '700'
Declare @SQLToExecute varchar(4000)
SET @SQLToExecute = 'SELECT * FROM ( SELECT TOP ' + @n2 + ' * FROM #tbl
ORDER BY ID) a EXCEPT SELECT * FROM ( SELECT TOP ' + @n1 + ' * FROM #tbl
ORDER BY ID ) b '
Exec(@SQLToExecute)
DROP TABLE #Tbl

【在 b******n 的大作中提到】
: select top n * from table order by column
: 是返回前n行,有没有办法返回荣国column排序的第n1到n2行这个范围?

b******n
发帖数: 1629
8
多谢各位,多谢多谢
g***l
发帖数: 18555
9
搞个RANK不就解决了。查一下RANK FUNCTION就知道了
1 (共1页)
进入Database版参与讨论
相关主题
How to write this query请教一个SQL的问题
包子题 (1st answer 100新币)请教一个query 优化的问题(filter keyword)
Merge table with one single query?请教set和select 的区别
Question about T-SQL请问sql server里面怎么输出变量到文本文件?
求助:如何ColumName 作为变量放入query问一个SQL Server的问题
请各位帮我看看这个最简单的Stored Procedure (转载)SQL2005 如何獲取所有 user login database mapping
誰來解釋一下這是什麼原理这个query怎么写?
问个 sp_send_dbmail 的问题error of executing SQL query of string concatenation (转载
相关话题的讨论汇总
话题: select话题: set话题: order话题: tbl话题: varchar