首页 > 解决方案 > 返回多行的子查询

问题描述

我有一个表 REGULAR_TAB 具有以下值-

VALUE_DEFN_ID        TYPE                     
-------------------------------------
15                   US_REGULAR_RATE            
16                   US_REGULAR_RATE           
18                   CA_FILING_STATUS   

   

REGULAR_RANGE 表

VALUE_DEFN_ID               VALUE
----------------------------------
15                           1.1
16                           1.2
18                           6

我创建了一个查询,其中我使用以下查询作为子查询。类似于 -

(select value
from REGULAR_TAB  TAB,
REGULAR_RANGE RANGE
WHERE TAB.VALUE_DEFN_ID = RANGE.VALUE_DEFN_ID
AND TAB.TYPE = 'US_REGULAR_RATE')

这给了我两个值,因此不起作用。有没有办法可以修改子查询,以便我可以在每个中同时包含 15 和 16 个值。如果我使用 ROWNUM = 1,它将随机选择第一行,但我希望它被定义为始终是第一行,即 15 在子查询顺序中排在第一位,然后是 16 .....

标签: sqloracleoracle-sqldeveloper

解决方案


您可以通过ROWNUMinOracleLIMIT,OFFSETin实现此目的MySQL

Oracle

oracle在这里,我通过使用共享了简单的查询,OFFSET & ROWS

select value
        from REGULAR_TAB  TAB,
        REGULAR_RANGE RANGE
        WHERE TAB.VALUE_DEFN_ID = RANGE.VALUE_DEFN_ID
        AND TAB.TYPE = 'US_REGULAR_RATE' ORDER BY value OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY 

同样对于MySQL,我与 Order byandLimit子句共享查询。

MYSQL

select value
    from REGULAR_TAB  TAB,
    REGULAR_RANGE RANGE
    WHERE TAB.VALUE_DEFN_ID = RANGE.VALUE_DEFN_ID
    AND TAB.TYPE = 'US_REGULAR_RATE' order by value limit 1

这将对您有所帮助。


推荐阅读