sql - 子查询用作表达式时,子查询返回的值不允许超过 1 个
问题描述
我的目标是从一个表中获取数据并在另一个表中更新它。我正在执行显式连接并运行下面的查询。
UPDATE [Users] set
name = (
SELECT concat(Column1,' ',Column2)
from [Table2]
inner join [Users] on Name = Column3
where Name like 'ABC'
)
运行上述查询时出现以下错误:
消息 512,级别 16,状态 1,第 45 行
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
请注意 Column1、Column2、Column3 是表 2 独有的,因此我没有添加限定符。
解决方案
你可以尝试使用UPDATE... JOIN
UPDATE t1 set
name = concat(Column1,' ',Column2)
FROM [Users] t1 JOIN [Table2] on Name = Column3
where Name like 'ABC'
推荐阅读
- ckeditor5 - ckeditor5 MentionCustomization 无法读取未定义的属性“createAttributeElement”
- google-apps-script - getEditResponseURL() 到字符串到电子邮件收到 404 错误
- typescript - TypeScript:重载函数时“重载签名必须都是环境或非环境”
- flutter - Sembast - 删除地图中的值
- linker - Fortran 中不明确的 C 绑定名称
- freepascal - SetLength 和多维动态数组
- php - 如何在 PHP 中使用 Guzzle 实现异步调用
- reactjs - 在material-ui Table里面懒加载
- sql-server - 连接到 AWS Workspace 上的 SQL Server 实例
- swift - 如何在 SwiftUI 中为 ForEach 中的特定按钮设置动画?