Oracle SQL Запрос без использования нескольких встроенных выборок - PullRequest
1 голос
/ 05 мая 2020

Env: Oracle 12 c

У меня есть таблица с именем: MY_TAB со следующими образцами данных:

CODE         KEY_ID
------------ --------
2000         95
1055         96
2000         97

Используя приведенный выше образец данные таблицы, мне нужно взять минимальное значение CODE, в этом случае 1055 вместе с KEY_ID вместе с этим минимальным значением CODE, то есть 96, и использовать его в другом запросе как таковом:

select *
from   another_table
where  code = minimum CODE value from MY_TAB
and    key_id = KEY_ID alongside the minimum CODE value

Подумывал использовать что-то вроде этого:

where code = (select min(CODE) from MY_TAB where .....) 1055
and   key_id = select KEY_ID from MY_TAB for MIN(CODE)  96

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

1 Ответ

2 голосов
/ 05 мая 2020

Я бы порекомендовал:

select code, key_id
from my_tab
order by code
fetch first 1 row only

Вы можете использовать это в запросе как:

where (t.code, t.key_id) in (select code, key_id
                             from my_tab
                             order by code
                             fetch first 1 row only
                            )

Альтернативой в более старых версиях Oracle является:

select min(code) as code,
       min(key_id) keep (dense_rank first order by code) as key_id
from my_tab;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...