返回多行时的SQL查询

我正在尝试用一个条件来查询条件,看看我将显示哪个列表但是我有这个错误ORA-01427:单行子查询返回多行.

查询是这样的:

select
CASE WHEN action_type like 'Trigger Severity' THEN (select cast(SEVERITY as varchar2(255)) name from SURV_TRIGGER_SEVERITY_LIST)
     WHEN action_type like 'Host Group'  then (select cast(name as varchar2(255)) name from Surv_List.groups)
     WHEN action_type like 'Host'  then (select cast(name as varchar2(255)) name from tn_tree)
    END display_value
from surv_action_type_list
where id = 0

是否可以在案例条件中调用多行的查询?

最佳答案 我会分多步完成这个.获取操作类型,然后发出相应的查询.无论您是在前端还是在存储过程中使用此逻辑,都可能取决于许多其他事情.

如果你绝对需要这样做,那么你可以尝试这样的事情:

SELECT
    SQ.display_value
FROM
    surv_action_type_list SATL
INNER JOIN
    (
    SELECT
        'Trigger Severity' action_type,
        CAST(severity AS VARCHAR2(255)) display_value
    FROM
        SURV_TRIGGER_SEVERITY_LIST
    UNION ALL
    SELECT
        'Host Group' action_type,
        CAST(name AS VARCHAR2(255) display_value
    FROM
        Surv_List.groups
    UNION ALL
    SELECT
        'Host' action_type,
        CAST(name AS VARCHAR2(255) display_value
    FROM
        tn_tree
    ) SQ ON
    SQ.action_type = SATL.action_type
WHERE
    SATL.id = 0
点赞