MySQL Выберите идентификатор от до и исключите начальный и конечный идентификатор

У меня есть таблица:

+----+-------------------+----------+
| id | channel           | channels |
+----+-------------------+----------+
| m2 | AA-AA             |        4 |
| 1  | TT_1              |        4 |
| 2  | TT_2              |        4 |
| 11 | TT_3              |        4 |
| 12 | TT_4              |        4 |
| m4 | BB-BB             |        4 |
| m3 | CC-CC             |        4 |
| m5 | DD-DD             |        4 |
| 17 | FF-FF             |        4 |
| m1 | EE-EE             |        4 |
+----+-------------------+----------+

Мне нужно запросить и получить результат от m2 до следующего начального идентификатора m, исключая m2 и m4 в этом примере... поэтому мой ajax отправляет это в mysql:

http://server_ip/get_bouquets/m2

И должен получить результаты:

1
2
11
12

Если клиент отправляет на сервер:

http://server_ip/get_bouquets/m5

Это необходимо для получения результатов:

17

Я пробовал с: Запрос показать здесь

SELECT id, channel, channels FROM tables WHERE id BETWEEN 'm2' AND '%m%' but i got empty results...any help will be welcome.

Спасибо.

Строки в реляционной базе данных представляют собой неупорядоченные наборы. Я думаю, вам нужно пересмотреть свою схему. :-(

Strawberry 22.05.2019 12:20

Вы не можете сказать последовательность событий из ваших опубликованных данных. (данные sql не хранятся в каком-либо определенном порядке)

P.Salmon 22.05.2019 12:22

Это простой запрос, который возвращает приведенную выше таблицу, полный запрос сложный и очень длинный, поэтому в этом вопросе он не требуется... поэтому я разместил выше простую таблицу, в которой мне нужно вернуть результаты....

user2631534 22.05.2019 13:06
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть какой-то способ гарантировать последовательность событий (и я моделирую здесь, используя поле auto_increment), вы можете обнаружить первый и следующий порядковый номер и проверить их.

DROP table if exists t;
create table t
(sno int auto_increment primary key, id varchar(2),channel varchar(20));
insert into t (id,channel) values
('m2'  , 'AA-AA'),             
( '1'  , 'TT_1' ) ,            
( '2'  , 'TT_2' ) ,                    
( '11' , 'TT_3' ),                      
( '12' , 'TT_4' ),                     
( 'm4' , 'BB-BB'),                     
( 'm3' , 'CC-CC'),                     
( 'm5' , 'DD-DD'),                     
( '17' , 'FF-FF'),                     
( 'm1' , 'EE-EE');

select id 
from t
where sno > (select sno from t where id = 'm2') and sno < 
(select sno from t t1 where left(id,1) = 'm' and sno > (select sno from t where id = 'm2') limit 1);

+------+
| id   |
+------+
| 1    |
| 2    |
| 11   |
| 12   |
+------+
4 rows in set (0.00 sec)

Это отличный ответ! Один из способов гарантировать порядок — предоставить автоматически сгенерированный столбец со значением, основанным на значениях других столбцов. Я думаю, что это будет самая сложная часть для OP.

abelito 22.05.2019 13:40

Очень умный, очень полезный и быстрый запрос... спасибо, но мне нужно без идентификатора автоинкремента (в вашем примере это автоинкремент)... не могли бы вы сделать это без идентификатора автоинкремента?

user2631534 22.05.2019 15:41

Нет. Если у вас нет какого-либо способа гарантировать последовательность событий, это невозможно. Это может быть в ваших исходных данных или в результате запроса, который создает образцы данных в вопросе (возможно, row_number).

P.Salmon 22.05.2019 17:58

Другие вопросы по теме