Как вывести данные в порядке обратном от того, в котором они лежат в БД?

106
08 мая 2021, 18:20

У меня есть поле поле pipe_n, в котором данные лежат так:

1
22
4
66
10
5

Мне нужно так:

5
10
66
4
22
1

Такое возможно?

Делаю отчет в mvc web form или может в программе такое возможно?
Данные записываются из программы тупо по очереди, исходника программы у меня нет, только БД с данными, и мне их нужно вывести в обратном порядке.
Поля ID в базе нет, а group by на это поле сортирует его по порядку, что мне не нужно.

Answer 1

TL;DR Порядок считывания строк из таблицы никоим образом не зависит от порядка, в котором эти строки были записаны, или другими словами - от порядка вставки.
Без явного указания сортировки с order by, порядок вывода строк произволен и может менятся от вызова к вызову одного и того же запроса.

Попробуем:

create table pipes (pipe_n number);
insert into pipes (pipe_n) 
    select column_value pipe_n
    from sys.ODCINumberList (1, 22, 4, 66, 10, 5)
;
select pipe_n
from pipes
order by rownum desc; 
    PIPE_N
----------
         5
        10
        66
         4
        22
         1

Работает? Вроде да, результат же достигнут. Нет, это иллюзия, это "бомба замедленного действия". Сколько она будет тикать - никто не знает, может месяц, год, два.

Ещё раз, порядок считывания строк из таблицы не зависит от порядка их записи и он произволен. То есть то, что значению, например, pipe_n=5 будет всегда присвоено rownum=6 не гарантируется.

Поля ID в базе нет

Создайте, это и будет лучшее решение:

rollback;
alter table pipes add order_of_ins number generated always as identity (nocache);

И после вставки приведённой выше, запрос:

select pipe_n
from pipes
order by order_of_ins desc;

Выведет желаемый результат как и выше, но он гарантирован и никогда не изменится.

READ ALSO
Работа с БД из двух приложений

Работа с БД из двух приложений

Есть два приложения:

132
Реализация сочетания клавиш в консоли

Реализация сочетания клавиш в консоли

Подскажите, а как можно реализовать работу сочетаний клавиш в консоли?

112
Упрощение кода по нажатию на элемент C#

Упрощение кода по нажатию на элемент C#

только начинаю работать с C#, тут возник вопросУ меня есть тут много элементов (стрелок), у которых действия при нажатии почти идентичны, лишь...

115
Checklist с доп значениями

Checklist с доп значениями

Можно ли как то реализовать checklist, что бы отображался один текст, и к нему привязана другая строка? Опишу по подробнее, начал осваивать С#Есть...

84