【问题标题】:Need assistance with SQL Query with error message Operand should contain 1 column(s)需要 SQL 查询帮助并显示错误消息操作数应包含 1 列
【发布时间】:2020-10-12 10:42:39
【问题描述】:

美好的一天

我有以下查询,但我收到一条错误消息“操作数应包含 1 列”

任何帮助将不胜感激

UPDATE expenditure
SET BP = (
    SELECT * ,
           SUM(balance_provision - actual_amt_voucher) over (partition by voteid order by expenditureid) AS BalanceProvision
    FROM expenditure
)

【问题讨论】:

    标签: mysql select sql-update mariadb window-functions


    【解决方案1】:

    您似乎想用窗口总和更新列bp

    您的查询失败,因为您试图将结果集(具有多列)分配给单个列。

    但即使您从子查询返回标量值,这也行不通,因为 MySQL 不允许在子查询中重用 update 的目标表。

    相反,你可以使用update ... join 语法。假设expenditureid 是表的主键,顾名思义,那就是:

    update expenditure e
    inner join (
        select 
            expenditureid, 
            sum(balance_provision - actual_amt_voucher) over (partition by voteid order by expenditureid) bp
        from expenditure
        group by expenditureid
    ) e1 on e.expenditureid = e1.expenditureid
    set e.bp = e1.bp
    

    【讨论】:

    • 谢谢。非常感谢!
    • 欢迎@Ria:如果我的回答正确回答了您的问题,请点击复选标志accept it
    猜你喜欢
    • 2023-03-29
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多