【问题标题】:SQL single-row subquery returns more than one rowSQL 单行子查询返回多于一行
【发布时间】:2014-11-09 20:08:53
【问题描述】:

以下查询应返回为动漫角色配音的人的姓名。但我收到以下错误:

Blockquote ORA-01427:单行子查询返回多行

SELECT P.NAME, 
FROM DBS_PERSON P
WHERE P.ID = (
    SELECT VA.PERSON_ID
    FROM DBS_VOICEACTOR VA
    WHERE VA.PERSON_ID = (
        SELECT AA.PERSON_ID
        FROM DBS_ACTSAS AA
        WHERE AA.CHARACTER_ID = (
            SELECT C.ID
            FROM DBS_CHARACTER C
            WHERE C.ID = (
              SELECT PI.CHARACTER_ID
              FROM DBS_PLAYSIN PI
              WHERE PI.SERIE_ID = (
                SELECT S.ID
                FROM DBS_SERIE S
                WHERE S.ID = '1')))));

提前致谢!

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    代替

    WHERE <field_name> = (SELECT ...
    

    使用

    WHERE <field_name> IN (SELECT ...
    

    您的查询中有 5 个条件需要更改。

    UPD 您的查询也相当于

    SELECT P.NAME
    FROM DBS_PERSON P
         join DBS_ACTSAS AA  on P.PERSON_ID = AA.PERSON_ID
         join DBS_PLAYSIN PI on AA.CHARACTER_ID = PI.CHARACTER_ID
         join DBS_SERIE S    on PI.SERIE_ID = S.ID
    WHERE S.ID = '1';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      相关资源
      最近更新 更多