Py学习  »  DATABASE

在Oracle、MySQL和SQL Server中使用SQL从表中选择第n行,假设表中没有有序列[重复]

rama krishna • 5 年前 • 1487 次点击  

这个问题已经有了答案:

我们坐T1桌吧

SQL > Select * from t1;

COL1

    9
    1
    8
    6
    4

q)从表中检索第三行的查询。

a)甲骨文:

SQL > select col1 from (select col1, row_number() over(order by rowid) rn from t1) where rn=3;

由于rowid psuedo列在其他数据库中不存在,如何从mysql、sql server等数据库中的表中检索第n条记录。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39843
 
1487 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Zaynul Abadin Tuhin
Reply   •   1 楼
Zaynul Abadin Tuhin    6 年前

对于mssql,可以使用row_number()窗口函数

select * from 
(
select *, row_number() over(order by col1) rn from t
) t1 where t1.rn=1 -- 2 or 3, n
Jayasurya Satheesh
Reply   •   2 楼
Jayasurya Satheesh    6 年前

SQL Server还有 ROW_NUMBER 功能

你可以像

;WITH CTE
AS
(
    SELECT
        RN = ROW_NUMBER() OVER(ORDER BY EmployeeID),
        *
        FROM dbo.Employee
)
SELECT
    *
    FROM CTE
        WHERE RN = 5--To Get the 5th Record