Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLite在结果查询中不使用循环获取单行位置_Java_Android_Sql_Sqlite - Fatal编程技术网

Java SQLite在结果查询中不使用循环获取单行位置

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

使用sql查询,我得到100个结果行。我需要知道这100行中的单行位置。我有可以循环检查的唯一字段,但这需要很长时间。是否有一种方法可以在查询结果中获取单个项目的位置


例如:我有一个具有唯一用户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