gpt4 book ai didi

sql - 如何确定行在SQL结果集中的位置?

转载 作者:行者123 更新时间:2023-12-04 03:02:53 25 4
gpt4 key购买 nike

我有一个SQL查询:

select id, name from table order by name


结果看起来像这样:

52 arnold 
33 berta
34 chris
47 doris
52 emil


对于给定的id = 47,我如何确定结果集中的位置?
结果应为4,因为:

52 arnold
33 berta
34 chris


在(47,doris)之前并且id = 41在结果集中的第4位。

如何在SQL中执行此操作?
HQL怎么样?
在分页示例中,我是否必须执行2条语句,还是有一种解决方案,我可以准确地检索到包含id = 47的行的窗口?

PostgreSQL和Java

最佳答案

以前的帖子是正确的。如果使用Microsoft SQL Server 2005或更高版本,请使用ROW_NUMBER。

但是,您的标记未指定您使用的是MSSQL,因此,这是一个适用于大多数RDBMS实现的解决方案。本质上,基于外部查询的ORDER子句的值,使用相关子查询来确定同一集合中少于当前行的行数。像这样:

SELECT      T1.id,
T1.[name],
(SELECT COUNT(*)
FROM table T2
WHERE T2.[name] < T1.[name]) + 1 AS rowpos
FROM table T1
ORDER BY T1.[name]

关于sql - 如何确定行在SQL结果集中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1079480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com