Используйте MySQL, чтобы выбрать следующую запись после соответствующего значения

5171
Martini002

Как выбрать все строки рядом со строкой, соответствующей условию?

Это структура таблицы с 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 9 DateTime 3 10 DateTime 9 

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

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

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

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

ID Date N1 2 DateTime 2 5 DateTime 3 9 DateTime 3 
0

2 ответа на вопрос

1
Pimp Juice IT

Вы можете использовать Temp Table для хранения Idзаписей, где N1равно 9. Затем вы выбираете все записи из Timesтаблицы, где Idзначения находятся во временной таблице, плюс одна, которая является самой следующей записью из Idстолбца, следующей за записью после N1значения 9.

SQL-запрос

DROP TABLE IF EXISTS t1; CREATE TEMPORARY TABLE t1 (SELECT id FROM numbers WHERE N1 = 9); Select * FROM t1;  SELECT * FROM numbers WHERE id IN (Select id+1 FROM t1); 

Или же

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9) 

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

Выберите * из Times

enter image description here

С вышеупомянутым запросом

enter image description here


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

Не работает для меня, он показывает идентификаторы (1,4,8,10), где N1 = 9, прочитайте мой последний комментарий в вопросе Martini002 7 лет назад 0
Я попробую это снова на моем сервере MySQL, просто чтобы подтвердить неправильный стиль с моей стороны, но первая попытка не сработала для меня, дайте мне минутку, пожалуйста Martini002 7 лет назад 0
Я знаю, почему он не работал, `Select * FROM t1;` он присутствует в вашей 3-й строке, хахаха, работает, как и ожидалось, большое спасибо вам Martini002 7 лет назад 0
Но если `RowID` не является секретным? Если я удаляю `ID 5`, он не может показать` RowID 6` Martini002 7 лет назад 0
0
Martini002

Лучшая версия Moderator Impersonatorответа будет:

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9) 
Я также обновил свой ответ с этой деталью из этого ответа для вас. Pimp Juice IT 7 лет назад 0
Я разместил новый вопрос [Здесь] (https://superuser.com/questions/1198483/mysql-select-all-rows-after-matching-value-with-not-secuential-rowid) Martini002 7 лет назад 0