У меня есть таблица:
+----+-------------------+----------+
| 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.
Спасибо.
Вы не можете сказать последовательность событий из ваших опубликованных данных. (данные sql не хранятся в каком-либо определенном порядке)
Это простой запрос, который возвращает приведенную выше таблицу, полный запрос сложный и очень длинный, поэтому в этом вопросе он не требуется... поэтому я разместил выше простую таблицу, в которой мне нужно вернуть результаты....
Если у вас есть какой-то способ гарантировать последовательность событий (и я моделирую здесь, используя поле 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.
Очень умный, очень полезный и быстрый запрос... спасибо, но мне нужно без идентификатора автоинкремента (в вашем примере это автоинкремент)... не могли бы вы сделать это без идентификатора автоинкремента?
Нет. Если у вас нет какого-либо способа гарантировать последовательность событий, это невозможно. Это может быть в ваших исходных данных или в результате запроса, который создает образцы данных в вопросе (возможно, row_number).
Строки в реляционной базе данных представляют собой неупорядоченные наборы. Я думаю, вам нужно пересмотреть свою схему. :-(