不使用多个内联选择的Oracle SQL查询

问题描述 投票:0回答:1

Env:Oracle 12c

我有一个名为: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

不确定在没有多个嵌套的内联选择的情况下解决此查询的最佳方法。

sql oracle oracle12c
1个回答
0
投票

我建议:

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;
© www.soinside.com 2019 - 2024. All rights reserved.