1

Как выбрать все строки рядом со строкой, соответствующей условию? Но, учитывая, что не существует последовательного RowID, подобного ID Field

Это структура таблицы с 10 строками, но в будущем число строк будет увеличиваться.

Простой текст:

ID      Date        N1
1     DateTime    9  
2     DateTime    2
3     DateTime    5
4     DateTime    9
5     DateTime    3
6     DateTime    6
7     DateTime    7
8     DateTime    9
20    DateTime    3 //Sequence broken
21    DateTime    9

Примечание. Строка "DateTime" - это просто символ, это будет любой DateTime.

Я пытаюсь узнать первый номер N1 после числа: 9

Я пробовал несколько способов, но результат не то, что мне нужно.

Ожидаемый результат:

ID      Date        N1
2     DateTime      2
5     DateTime      3
20    DateTime      3

Простой способ добиться этого был опубликован в этом вопросе, но только если RowID сохраняет последовательность.

1 ответ1

0

Вы можете создать две Временные таблицы с одной, используя переменную @row_num создавая индекс для номера строки и увеличивая каждую на одну, независимо от значений RowID . Затем из этой временной таблицы вы выберете row_num+1 где значение N1 равно 9 . Оттуда вы явно выбираете столбцы id и N1 где значения row_num совпадают, давая вам желаемый результат.

SQL-запрос

SET @row_num:=0;
DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 (SELECT @row_num:=@row_num+1 AS row_num, id, N1 FROM numbers);

DROP TABLE IF EXISTS t2;
CREATE TEMPORARY TABLE t2 (Select row_num+1 as row_num FROM t1 WHERE N1 = 9);

SELECT id, N1 FROM t1
WHERE row_num IN (Select * From t2);

подтверждение

Выберите * из чисел (здесь отсутствует RowID равный 5 )

Выше SQL-запроса


Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .