Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
Android SQLite查询选择一行并返回下两行_Android_Sql_Sqlite - Fatal编程技术网

Android SQLite查询选择一行并返回下两行

Android SQLite查询选择一行并返回下两行,android,sql,sqlite,Android,Sql,Sqlite,我的数据库看起来像这样 ID SSID BSSID RSSI 1. ABCD ab:cd:17 -68 2. efgh cd:as:25 -60 3. ijkl cs:gb:d6 -75 4. abcd dc:5g:f4 -72 .... 518. ABCD ab:cd:17 -68 519. asfd

我的数据库看起来像这样

ID      SSID      BSSID         RSSI
1.      ABCD      ab:cd:17      -68 
2.      efgh      cd:as:25      -60
3.      ijkl      cs:gb:d6      -75 
4.      abcd      dc:5g:f4      -72 
....
518.    ABCD      ab:cd:17      -68
519.    asfd      ag:4g:32      -60
520.    aasd      gd:5g:56      -79
我试图创建一个函数,它根据函数的输入参数选择行,并返回此行和下两行

到目前为止,我所做的是函数返回带有匹配参数的记录

public Cursor getRequiredData(String mac, int level){
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery("SELECT BSSID, RSSI FROM Scans_table WHERE BSSID =? AND RSSI =?", new String[] {mac, String.valueOf(level)});
    return res;
}
我要寻找的结果是,例如,如果macparameter是ab:cd:17,level=-68,那么函数将返回提供的第1、2、3行示例数据

编辑:


此查询工作正常,但它只给我第一条与mac和String.valueOflevel参数匹配的记录,以及下两条ID最高的记录。如果我的表中有多条记录具有相同的这些参数值,该怎么办?是否有方法获取所有匹配记录和具有最高ID的两个next?示例数据

假设“下一行”是指具有下一个最高ID的行,则可以使用子查询获取所需行的ID,然后按和限制排序以获取下两行:

select st.*
from scans_table st
where st.id >= (select st2.id from scans_table st2 where <your conditions are here>)
order by st.id asc
limit 3;

您好,我不想就同一个问题添加新问题。我刚刚编辑了其中的一部分。如果你能看一下,那就太好了。@masoholic。你应该用适当的样本数据和期望的结果提出一个新问题。特别是,在重复的情况下,特别是第二个id出现(例如3次)时,要具体说明该怎么做。
select st.*
from scans_table st
where st.id >= (select st2.id from scans_table st2 where <your conditions are here>)
order by st.id asc
limit 3;