Оператор Select, возвращающий идентификаторы в обратном направлении - PullRequest
2 голосов
/ 26 апреля 2020

У меня есть таблица с некоторыми основными идентификаторами.

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

Я попытался выполнить sh вторую половину безуспешно. Чего я хочу добиться, так это оператора select, который получит противоположность приведенного ниже примера.

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, которому я был предоставлен:

SELECT * FROM my_table ORDER BY id > 5 DESC, id;

Возвращает 6 - 7 - 8 - 9 - 1 - 2 - 3 - 4 - 5


Мне также нужно выражение select для возврата:

5 - 4 - 3 - 2 - 1 - 9 - 8 - 7 - 6

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

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

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

  • вы знаете id текущего элемента
  • id является первичным ключом или другим уникальным значением
  • next получает следующее более высокое id значение
  • предыдущее получает следующее более низкое id значение
  • , когда вы добираетесь до любого конца диапазона значений идентификатора, Вы ничего не получаете ... нет следующего или предыдущего .

Вот как получить следующий идентификатор .

 SELECT id FROM tbl WHERE id > [[[current_id]]] ORDER BY id LIMIT 1

И, аналогично, вот как можно получить предыдущее значение.

 SELECT id FROM tbl WHERE id < [[[current_id]]] ORDER BY ID desc LIMIT 1

Эти запросы возвращают только одну строку или не содержат строк, если нет следующий или предыдущий

Нет ничего, что можно было бы извлечь из схемы условного заказа, когда вам нужно только одно значение

0 голосов
/ 26 апреля 2020

Вам нужна условная сортировка:

SELECT * FROM my_table 
ORDER BY id < 6 DESC, id DESC;

См. Демоверсию . Результаты:

| id  |
| --- |
| 5   |
| 4   |
| 3   |
| 2   |
| 1   |
| 9   |
| 8   |
| 7   |
| 6   |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...