MySQL оператор выбора, возвращающий результаты в режиме круга - PullRequest
1 голос
/ 03 февраля 2020

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

Информация о картах хранится в MySQL таблице «Карты» и имеет уникальный идентификатор, скажем «CardID», начиная с номера 1.000.000 и скоро. Допустим, в настоящее время я добавил 500 карт в таблицу «Карты», поэтому последний сохраненный идентификатор карты равен 1.000.500. Я хочу создать процедуру, которая будет отправлять пользователю 20 карт за раз в зависимости от направления, в котором он продолжает перелистывать. Если проведите влево, процедура отправит предыдущие 20 записей и т. Д.

Теперь подумайте, что пользователь продолжает пролистывать влево и запрашивает предыдущие записи с номера 1.000.009 и ниже. Я хочу написать оператор выбора, который будет извлекать и обслуживать пользователя для тех 9 строк слева и 11 строк в нижней части таблицы. Это были бы записи с CardID от 1.000.489 до 1.000.500, так что, когда пользователь проведет пальцем, не будет 1.000.000 (первым), он будет go по кругу, чтобы увидеть 1.000.500 и наоборот

Заранее спасибо

1 Ответ

0 голосов
/ 03 февраля 2020
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table (id SERIAL PRIMARY KEY);

INSERT INTO my_table VALUES 
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9);

SELECT * FROM my_table ORDER BY id > 5 DESC, id;
+----+
| id |
+----+
|  6 |
|  7 |
|  8 |
|  9 |
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
...