需要 SQL 查询帮助并显示错误消息操作数应包含 1 列

Posted

技术标签:

【中文标题】需要 SQL 查询帮助并显示错误消息操作数应包含 1 列【英文标题】:Need assistance with SQL Query with error message Operand should contain 1 column(s) 【发布时间】: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
)

【问题讨论】:

【参考方案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。

以上是关于需要 SQL 查询帮助并显示错误消息操作数应包含 1 列的主要内容,如果未能解决你的问题,请参考以下文章

1241, '操作数应包含 1 列' pandas to_sql

Python - 需要帮助将字典字典写入 CSV 文件

如何修复 SQLSTATE[21000]:基数违规:1241 操作数应包含 1 列

java 和 sql 显示 #1241 - 操作数应包含 1 列

带有 SQL 查询的 Access 中的运行时错误 3067

MySQL无法在错误的表上运行任何SQL查询