Java SQLite在结果查询中不使用循环获取单行位置
使用sql查询,我得到100个结果行。我需要知道这100行中的单行位置。我有可以循环检查的唯一字段,但这需要很长时间。是否有一种方法可以在查询结果中获取单个项目的位置Java SQLite在结果查询中不使用循环获取单行位置,java,android,sql,sqlite,Java,Android,Sql,Sqlite,使用sql查询,我得到100个结果行。我需要知道这100行中的单行位置。我有可以循环检查的唯一字段,但这需要很长时间。是否有一种方法可以在查询结果中获取单个项目的位置 例如:我有一个具有唯一用户ids12、13、20、21、34、5的表。这些用户按创建日期排序。如何使用sql查询获得id=34的用户位置?优化sql查询总是比处理大量结果更有效 创建一个SELECTWITHWHERE子句,在该子句中,您将检查有多少用户的创建日期小于所需的id所有者 SELECT count(*) FR
例如:我有一个具有唯一用户ids12、13、20、21、34、5的表。这些用户按创建日期排序。如何使用sql查询获得id=34的用户位置?优化sql查询总是比处理大量结果更有效 创建一个SELECTWITHWHERE子句,在该子句中,您将检查有多少用户的创建日期小于所需的id所有者
SELECT
count(*)
FROM
table
WHERE
creationDate < (SELECT creationDate FROM table WHERE id = 34)
那么记录位置就是上面选择的值,或者您需要添加1,这取决于您是从0还是1开始计数
如果创建日期可以重复,您将需要处理这种情况,这取决于您如何处理具有相同creationDate的记录可能简单creationDate优化SQL查询总是比处理巨大结果更有效 创建一个SELECTWITHWHERE子句,在该子句中,您将检查有多少用户的创建日期小于所需的id所有者
SELECT
count(*)
FROM
table
WHERE
creationDate < (SELECT creationDate FROM table WHERE id = 34)
那么记录位置就是上面选择的值,或者您需要添加1,这取决于您是从0还是1开始计数
如果创建日期可以重复,您将需要处理这种情况,这取决于您如何处理具有相同creationDate的记录可能是简单creationDate您可以尝试类似的方法
SELECT row ( SELECT ROW_NUMBER() OVER (ORDER BY columnChoosen) AS row, columnChoosen FROM yourTable) sub WHERE sub.columnChoosen = 34
你可以试试这样的
SELECT row ( SELECT ROW_NUMBER() OVER (ORDER BY columnChoosen) AS row, columnChoosen FROM yourTable) sub WHERE sub.columnChoosen = 34