SQLite запрос, чтобы выбрать одну строку и вернуть его с 2 следующими строками - PullRequest
0 голосов
/ 13 декабря 2018

моя база данных выглядит следующим образом

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;
}

Результат, который я ищу, например, если параметр mac равенab:cd:17 и level = -68 функция возвращает строки 1, 2, 3 (предоставлены примеры данных)

РЕДАКТИРОВАТЬ:

Cursor res = db.rawQuery("SELECT * from Scans_table st where ID >= " +
            "( select ID from Scans_table where BSSID =? AND RSSI =? ) order by st.ID asc limit 3 ", new String[] {mac, String.valueOf(level)});

Этот запрос работает нормально, ноон просто дает мне первую запись, которая соответствует параметрам mac и String.valueOf(level), и следующие 2 записи с наибольшим значением ID.Что если в моей таблице более одной записи с одинаковыми значениями этих параметров?Есть ли способ получить все подходящие записи и 2 связи с самым высоким ID? (Пример данных)

1 Ответ

0 голосов
/ 13 декабря 2018

Предполагая, что под "следующими строками" вы подразумеваете "строки со следующими наивысшими идентификаторами", вы можете использовать подзапрос, чтобы получить идентификатор нужной вам строки, а затем order by и limit, чтобы получить следующие две строки:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...