【问题标题】:ORA-01427: single-row subquery returns more than one row errorORA-01427: 单行子查询返回多行错误
【发布时间】:2014-06-24 00:39:00
【问题描述】:

我有 2 个表(USERS 和 ACCOUNTS),其中包含以下数据:

用户

UserID     Name          Account_Number
10         John Smith    13
20         Alex Brown    14
30         Mary Wade     34

帐户

Account number     Amount     
13                 40
34                 30
14                 30
13                 60
14                 10

我想知道如何编写查询以返回以下结果:

UserID             Name           Total amount     
13                 John Smith     100     
14                 Alex Brown     40             
34                 Mary Wade      30             

我尝试过的查询是:

SELECT USER_ID, NAME, (SELECT SUM(AMOUNT) FROM ACCOUNTS GROUP BY ACCOUNT) AS TOTAL_AMOUNT
FROM USERS
JOIN ACCOUNTS
USING(ACCOUNT_NUMBER)
ORDER BY TOTAL_AMOUNT DESC;

执行此操作时,我收到以下错误:ORA-01427:单行子查询返回多行。

有谁知道我可以如何修改查询以使其按预期工作?

谢谢!

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    请尝试:

    select 
        Account_Number, 
        Name,
        (select SUM(Amount) from ACOUNTS b where b.[Account number]=a.Account_Number) Total
    from USERS a
    order by Account_Number
    

    【讨论】:

    • 我只需要稍微改变一下它就可以了。感谢您的帮助!
    【解决方案2】:

    可能是这样的:

    SELECT
        USERS.USER_ID,
        USERS.NAME,
        SUM(ACCOUNTS.Amount) AS TotalAmout
    FROM USERS
    JOIN ACCOUNTS
        ON ACCOUNTS.Account_number=USERS.Account_number
    GROUP BY
        USERS.USER_ID,
        USERS.NAME
    ORDER BY
        TotalAmout DESC
    

    【讨论】:

      【解决方案3】:

      删除您的子查询..它返回不止一行..

      SELECT U.USERID, U.NAME, SUM(A.AMOUNT) AS TOTAL_AMOUNT
      FROM USERS U
       INNER JOIN ACCOUNT A on U.ACCOUNT_NUMBER=A.ACCOUNT_NUMBER
      GROUP BY A.ACCOUNT_NUMBER,U.USERID, U.NAME
      ORDER BY SUM(A.AMOUNT) DESC;
      

      Fiddle

      【讨论】:

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