Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新联接导致错误:子查询返回的值超过1_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 更新联接导致错误:子查询返回的值超过1

Sql 更新联接导致错误:子查询返回的值超过1,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试进行如下更新: UPDATE a SET a.PackageID = p.ID FROM gym.Account a JOIN Packages p ON a.MembershipTypeID = p.MembershipTypeID and a.SiteID = p.SiteID and a.SiteID = 1 我收到了错误信息 子查询返回了多个值 我看不出此错误消息如何准确,因为当我查询时: select ID, SiteID, PackageName, Member

我正在尝试进行如下更新:

UPDATE a
SET a.PackageID = p.ID
FROM gym.Account a
JOIN Packages p
ON a.MembershipTypeID = p.MembershipTypeID
and a.SiteID = p.SiteID
and a.SiteID = 1
我收到了错误信息

子查询返回了多个值

我看不出此错误消息如何准确,因为当我查询时:

select 
    ID, SiteID, PackageName, MembershipTypeID
from 
    Packages
where 
    siteid = 1
order by 
    MembershipTypeID, PackageName
…MembershipTypeID值都是唯一的-没有重复

然后我看了一下,试着这样做:

UPDATE gym.Account  
SET PackageID = (SELECT top 1 ID
                 FROM Packages
                 WHERE gym.Account.MembershipTypeID = MembershipTypeID)

然而,我仍然收到相同的错误消息,即使我正在做一个前1名。如何修复此问题?

检查表上是否有触发器。这可能是你错误的根源


此语句是否每个MembershipTypeID组合只生成一行?从gym中选择a.PackageID,p.ID。帐户a在a.MembershipTypeID=p.MembershipTypeID和a.SiteID=p.SiteID和a.SiteID=1上加入程序包p。帐户是表还是视图?还有,你有什么触发器吗?啊!有个扳机!我忘了。我没有将错误消息与触发器的存在联系起来。谢谢死区!它在禁用触发器后工作。你为什么不把你的答案贴出来,这样可以帮助别人…把答案贴出来。很乐意帮忙。是的,这就是问题所在。需要先禁用触发器。如果MS添加到错误消息中会很好:嘿,dummy,这个表上有一个触发器。。。