回答
几个其他的答案触及的问题,但是这或许可以解释。 SQL(集合论)中确实没有暗示的顺序。因此,要参照“第五行”需要你介绍这个概念
Select *
From
(
Select
Row_Number() Over (Order By SomeField) As RowNum
, *
From TheTable
) t2
Where RowNum = 5
在子查询中,通过定义你所期望的秩序“创造”一个行号。现在,外部查询能够将第五个条目从该有序集合中抽出。
您正在寻找的是row_number()
函数,正如Kaf在评论中提到的那样。
下面是一个例子:
WITH MyCte AS
(
SELECT employee_id,
RowNum = row_number() OVER (order by employee_id)
FROM V_EMPLOYEE
ORDER BY Employee_ID
)
SELECT employee_id
FROM MyCte
WHERE RowNum > 0
技术上SQL行没有在他们的桌子 “RowNumbers”。有些实现(Oracle,我认为)提供了自己的一个实现,但这不是标准实现,而SQL Server/T-SQL则没有。您可以使用IDENTITY列向表中添加一个(排序)。
或者您可以在具有ROW_NUMBER()函数的查询中添加一个(对于实数),但除非您为行指定了自己的唯一ORDER,否则ROW_NUMBERS将被非确定性地分配。
您可能指的是Oracle的'ROWID',它不是一行“数字”,而是该行的物理地址。 –
@a_horse_with_no_name对,就是这样。 – RBarryYoung
如果使用SQL Server 2012,你现在可以使用偏移/获取:
declare @rowIndexToFetch int
set @rowIndexToFetch = 0
select
*
from
dbo.EntityA ea
order by
ea.Id
offset @rowIndexToFetch rows
fetch next 1 rows only
或者你可以使用序列命令并创建一列唯一的数字。 –
有3种方法可以做到这一点。
假设你有一个雇员表,其列为emp_id
,emp_name
,salary
。你需要薪水最高的前10名员工。
使用
row_number()
解析函数Select * from (select emp_id,emp_name,row_number() over (order by salary desc) rank from employee) where rank<=10
使用
rank()
解析函数Select * from (select emp_id,emp_name,rank() over (order by salary desc) rank from employee) where rank<=10
使用
rownum
select * from (select * from employee order by salary desc) where rownum<=10;
- 1. 如何根据索引/行号从DataTable中选择行?
- 2. 如何根据范围选择行?
- 3. 如何根据行值选择列
- 4. 如何根据按钮选择行?
- 5. 如何根据两列值选择行?
- 6. 如何根据值列表选择行
- 7. 如何根据条件SQL选择行
- 8. 在SQL中如何根据当前行值选择前一行?
- 9. 如何根据mysql中另一行的值选择或不选择行
- 10. 如何根据另一个选择器的选择更改选择器行?
- 11. 根据日期选择行
- 12. 如何根据复选框列在表中选择一行
- 13. 根据多列值选择一行?
- 14. Ultrawingrid - 根据唯一值选择行
- 15. 根据列值选择另一行
- 16. 第一次根据号码条件选择行
- 17. 如何根据另一个选择查询的数据运行选择查询
- 18. R:根据行范围选择行值
- 19. 如何根据其他行中的相似或反向数据选择一行?
- 20. sql - 根据同一行中的两列值选择行ID,编号为
- 21. SQLite根据Where子句选择下一行和前一行
- 22. 根据不同的列值(同一行)选择一行
- 23. SQL查询 - 根据条件选择一行或另一行
- 24. 如何根据键从表中选择一组随机行?
- 25. 如何根据gtkTreeView中的选择删除rGtkDataFrame中的一行
- 26. 如何根据硒中某列的颜色选择一行
- 27. 如何根据日期从组中选择第一行
- 28. 如何根据另一个查询的输出来选择行?
- 29. 如何根据另一列“键控”的值进行选择?
- 30. numpy:如何根据一堆条件选择行
你是否在谷歌搜索“'row_number()'sql in function”?什么是你的SQL服务器版本? – Kaf
实际上表格中的记录没有数字。直到您在查询中设置了“ORDER BY”,行编号不适用。 –
如果您正在使用SQL 2012,请在列中使用序列命令。相信我,这是一种拯救生命的方式。 –