错误的SQLServer语法

时间:2011-02-03 23:20:09

标签: sql sql-server syntax sql-update

这就是我想要实现的目标:

涉及4个表:

  • PlayerID为PK的玩家
  • 竞争对手为PK
  • 结果为ResultID为PK,CompetID为FK

第4个表:PlayerResultts,ResultID + PlayerID为PK,CompetID为我创建的新列。

比赛,结果和PlayerResults 已经填充且非常大(到目前为止已有300,000个PlayerResults)。

为了填充PlayerResults.CompetID列,我尝试更新...(选择....)请求,但我不知道正确的语法,但它失败了。

这是我的微弱尝试:

update PlayerResults
set competid = (select distinct(r.competid) from results r, playerresults p  
where r.resultID = p.resultid)

错误(当然):

“Msg 512,Level 16,State 1,Line 1 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。“

有人能让我朝着正确的方向前进吗? TIA

1 个答案:

答案 0 :(得分:2)

您不需要明确的

update PlayerResults
set competid = r.competid
from results r
where r.resultID = PlayerResults.resultid