sql-server - 子查询返回超过 1 个值。当子查询跟随 !=、<、<=、>、>= 时,这是不允许的
问题描述
我正在尝试更新一个字段,以便销售额高于 0 的客户的 CustomerLevel 处于“1 级”,但这对我不起作用:
UPDATE Customers
SET CustomerLevel = 'Level 1'
WHERE (
(SELECT SUM(Sales.Subtotal)
FROM Sales
JOIN Customers
ON Customers.CustomerID = Sales.CustomerID
GROUP BY Customers.CustomerID
)
>=0)
解决方案
有几种方法可以做到这一点。推测,但这可能会有最好的执行计划,但检查一下。
UPDATE Customers
SET CustomerLevel = 'Level 1'
FROM Customers AS c1
INNER JOIN
(SELECT
SUM(Sales.Subtotal) AS sum2,
s2.CustomerID AS CustomerID2
FROM Sales AS s2
GROUP BY s2.CustomerID
) AS t2
ON t2.CustomerID = c1.CustomerID
AND t2.sum2 >=0
推荐阅读
- excel - 循环从复选框中提取值
- java - 如何使用java计算JSON中的元素数量
- sharepoint - 我有一个包含列的列表 A 和另一个与列表 A 相同的列表 B 列名称,都是单行文本,我想检索所有数据
- python - 如何编辑我的 python 脚本,以便它可以选择 fasta 序列的整个文本?
- javascript - nodejs 无法控制台来自 mongodb atlas 的日志数据
- internationalization - Angular 7 i18n 在服务、组件和没有模板的情况下翻译
- python - 通过使用 python 从相同的 json 获取新密钥来向 json 添加新密钥
- c# - 我想使用 iTextSharp 从 PDF 中获取除文本对象之外的所有对象作为图像
- reactjs - axios.post 给出了 CORS 问题,而 GET 在使用 Laravel API 的 React 中运行良好
- node.js - Elastic Beanstalk + Laravel:由于旧的 NodeJS 版本 0.10 无法运行 Gulp