powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка в соответствии с where e_id in (.....)
16 сообщений из 16, страница 1 из 1
Сортировка в соответствии с where e_id in (.....)
    #39342278
wadim37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Подскажите пож-та как оптимизировать выражение?

select e_id
from Eigenschaften
where e_id in (1, 6, 3, 124, 120, 126, 121);

Результат

E_ID
----------
1
3
6
120
121
124
126

Как можно получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"

Спасибо
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39342298
Вадиман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть разница между понятиями "множество" и "кортеж".
В этом примере используется классическое "множество".
Читаем определения.
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39342300
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39344143
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadim37Как можно получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"
Ну наверное, написав order by
так не делать. :)
Код: plsql
1.
order by (select min(r) from (select column_value c,rownum r from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121))) where e_id=c)


...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39344149
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя можно и попытаться обмануть судьбу
Код: plsql
1.
2.
3.
select column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) 
where exists (select null from Eigenschaften where e_id=column_value)

...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39344187
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев,

судьба может наказать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
with Eigenschaften as
(select 1 e_id from dual
union all select 6 e_id from dual
union all select 3 e_id from dual
union all select 124 e_id from dual
union all select 120 e_id from dual
union all select 121 e_id from dual
union all select 126 e_id from dual)
select
column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) t1 
where exists (select null from Eigenschaften t2 where e_id = column_value);

with Eigenschaften as
(select 1 e_id from dual
union all select 6 e_id from dual
union all select 3 e_id from dual
union all select 124 e_id from dual
union all select 120 e_id from dual
union all select 121 e_id from dual
union all select 126 e_id from dual)
select --+ use_nl(t1 t2) leading(t2 t1)
column_value e_id
from table(sys.odcinumberlist(1, 6, 3, 124, 120, 126, 121)) t1 
where exists (select null from Eigenschaften t2 where e_id = column_value);


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
      E_ID
----------
         1
         6
         3
       124
       120
       126
       121

7 rows selected.

      E_ID
----------
         1
         6
       120
       121
         3
       124
       126

7 rows selected.


...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39344287
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

Так я и говорил, про "попытаться обмануть судьбу".

Правильно, либо, как указал SY, ну или join с табличкой определяющей порядок.
Но в любом случае есть правило: нужен порядок - используй order by. :)
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39345975
wadim37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо конечно за совет

order by

но вопрос стоит, как получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39345983
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadim37но вопрос стоит, как получить результат в последовательности "in (1, 6, 3, 124, 120, 126, 121)"Для тех кто в танке, повторяем: Только явно сопоставив, что 6 - это второй, 3 - третий и т.д.
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39345999
0.10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sys.odcinumberlist(1.0, 6.1, 3.2, 124.3, 120.4, 126.5, 121.6)
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346008
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0.10sys.odcinumberlist(1.0, 6.1, 3.2, 124.3, 120.4, 126.5, 121.6)

Ну и что же ты будешь дeлать когда чисел будет бoльше 10?

SY.
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346026
0.0001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,

Повысив значность мантиссы, можно и большее число занумеровать.
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346028
elunin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
SELECT a.e_id
  FROM eigenschaften a
     , TABLE(t_number_table(1, 6, 3, 124, 120, 126, 121)) b
 WHERE a.e_id = b.column_value
 ORDER BY b.column_value



, где t_number_table у меня определен как
Код: plsql
1.
create or replace type t_number_table FORCE as TABLE OF NUMBER;
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346031
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elunin
Код: plsql
1.
2.
     , TABLE(t_number_table(1, 6, 3, 124, 120, 126, 121)) b
 ORDER BY b.column_value

Сортировать по значению так просто ... - Но не требовалось. Учись читать внимательно.
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346040
0.0001Повысив значность мантиссы, можно и большее число занумеровать.
.9 -> 9
.01 -> 10
to_number(reverse(to_char(mod(column_value, 1))))
...
Рейтинг: 0 / 0
Сортировка в соответствии с where e_id in (.....)
    #39346042
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
альтернатива.reverseДовольно опасная.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка в соответствии с where e_id in (.....)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]