gpt4 book ai didi

sql-server - 运行更新查询时出现 "Subquery returned more than 1 value"错误

转载 作者:行者123 更新时间:2023-12-03 02:57:50 26 4
gpt4 key购买 nike

请温柔一点,我正在尝试更新 sql server 中的查询,但遇到错误。这是我位于同一数据库中的两个表和下面提供的查询,我的要求是根据表 1 更新 table2 中的列 groupCode 但我面临以下错误:

错误

Msg 512, Level 16, State 1, Line 1 Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. The statement has been terminated.

表1

**Dept**    **DeptCode**    **GroupName**   **GroupCode**
IT 32 Login-Els 1
IT 32 QC-Els 4
CT 20 Login-OUP 1
CT 20 XML-OUP 2
CT 20 QC-OUP 4
MECH 34 Login-CEN 1
MECH 34 XML-CEN 2
MECH 34 PAGINATION-CEN 3
MECH 34 QC-CEN 4

表2

**Activity**    **DeptCode**    **Group**
Login-Els 32 NULL
QC-Els 32 NULL
Login-OUP 20 NULL
XML-OUP 20 NULL
QC-OUP 20 NULL
Login-CEN 34 NULL
XML-CEN 34 NULL
PAGINATION-CEN 34 NULL
QC-CEN 34 NULL

SQL

update db1..Activity set 
Groupcode = (
select groupcode
from db1..Groups
where DeptCode=32
and Groupname = (
select activity
from db1..Activity
where DeptCode=32
)
)

最佳答案

该错误消息表明您的一个或两个子查询返回了多于一行。这是不允许的,因为您使用子查询作为 = 的操作数。修复错误的一种可能方法是将 TOP 1 添加到每个子查询中。

完成此类更新任务的另一种可能方法是使用 UPDATE ... FROM ... JOIN语法如下:

UPDATE Activity
SET Groupcode = G.groupcode
FROM Activity A
INNER JOIN Groups G
ON A.activity = G.Groupname
AND A.DeptCode = G.DeptCode
WHERE A.DeptCode = 32

关于sql-server - 运行更新查询时出现 "Subquery returned more than 1 value"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30554126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com