希望標題解釋了它足夠的,但我希望能夠在兩個值SQL Server的兩個值
例如
SELECT * FROM table WHERE rows between 20 and 60
我之間選擇一個SQL Server錶行之間選擇行試過ROW_NUMBER(),然後使用WHERE子句....
謝謝,
傑森
希望標題解釋了它足夠的,但我希望能夠在兩個值SQL Server的兩個值
例如
SELECT * FROM table WHERE rows between 20 and 60
我之間選擇一個SQL Server錶行之間選擇行試過ROW_NUMBER(),然後使用WHERE子句....
謝謝,
傑森
SELECT TOP 40 * FROM (SELECT TOP 60 * FROM table ORDER BY xx ASC) t ORDER BY xx DESC
由於select語句可以按任何順序返回記錄(沒有order by子句),你需要決定適用的以記錄......如果你不使用主鍵的輸出「知道或護理(替代XX)
WITH mytable AS
(
SELECT *,
ROW_NUMBER() OVER (order by colname) AS 'RowNumber'
FROM table
)
SELECT *
FROM myTable
WHERE RowNumber BETWEEN 20 AND 60;
在SQL的早期版本,一個選擇是使用臨時表:
SELECT IDENTITY(int,1,1) RowNumber,*
into #Temp
FROM Table1
SELECT *
FROM #Temp
WHERE RowNumber between 20 and 60
如果您有SQL Server 2012中(或更高版本),你可以使用偏移 - 爲此獲取。
看到這個Microsoft Technet Article on the Offset-Fetch Clause。
您需要指定一個Order-By(我認爲這很明顯)。
如果你想在20和60行,那麼你真正的意思是你想在20開始(你的偏移量),然後選擇(或取)的下一個40
SELECT *
FROM TableName
ORDER BY SomeColumnName
OFFSET 20 ROWS
FETCH NEXT 40 ROWS ONLY
您甚至可以將「變量」和「計算」用於獲取和偏移值。
這裏有整整一個例子問題問什麼:20和60之間
DECLARE @RowStart Int = 20
DECLARE @RowEnd Int = 60
SELECT *
FROM TableName
ORDER BY SomeColumnName
OFFSET @RowStart ROWS
FETCH NEXT (@RowEnd - @RowStart) ROWS ONLY
SELECT *行(選擇ROW_NUMBER()OVER(ORDER BY列名)作爲民,Col_name1,Col_name2,Col_name3從TABLE_NAME) Table_name其中Num> 5和Num < 10;
例如:
Select * from emp;
SQL> select * from emp;選擇
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
7369 SMITH CLERK 7902 17-DEC-80 800 20
7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30
7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30
7566 JONES MANAGER 7839 02-APR-81 2975 20
7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30
7698 BLAKE MANAGER 7839 01-MAY-81 2850 30
7782 CLARK MANAGER 7839 09-JUN-81 2450 10
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7839 KING PRESIDENT 17-NOV-81 5000 10
7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7900 JAMES CLERK 7698 03-DEC-81 950 30
7902 FORD ANALYST 7566 03-DEC-81 3000 20
7934 MILLER CLERK 7782 23-JAN-82 1300 10
14行。
SQL> SELECT * FROM(SELECT ROW_NUMBER()以上(由EMPNO順序)貨號,ENAME,EMPNO,DEPTNO,從EMP SAL) EMP其中num> 5和Num < 10;
NUM ENAME EMPNO DEPTNO SAL
6 BLAKE 7698 30 2850
7 CLARK 7782 10 2450
8 SCOTT 7788 20 3000
9 KING 7839 10 5000
SQL>
+1。這個雙「頂」模式始終有效。 – RollingBoy 2011-03-30 01:56:38
一個有趣的+1,不包括@RollingBoy的投票。 – Hogan 2011-03-30 02:06:35
+1這適用於SQL 2000轉發。但請注意,數據將以相反的順序。爲了得到正確的順序,你需要將上面的代碼封裝在'SELECT * FROM()t2 ORDER BY xx ASC.' –
2011-03-30 02:47:38