PostgreSQL更新在哪里和

时间:2015-04-10 13:43:21

标签: postgresql

我的问题是我得到2表1是教练,1是工具

  • coach( cid ,forename,surname,toolNo)
  • 工具(toolNo,registNo)

我想通过使用registNo将教练“Will Smith”的工具更改为10。 然而,我的代码改变了每个人的工具,但不仅仅是史密斯的一个。

insert into coach values ('c2','will','smith',5)
insert into tool values ('10', 'R123')

    UPDATE coach
SET toolNo = t.toolNo 
From coach c,  tool t
WHERE t.registNo = 'R123'  
AND c.forename ='Will'
AND c.surname = 'smith';

1 个答案:

答案 0 :(得分:1)

在加入UPDATE语句时,您只需要列出要在FROM语句中加入的表,但是要更新的表已经在SET之前的查询顶部说明了。< / p>

此外,根据此SO question,您必须使用旧学校的加入方法而不使用ON子句。

UPDATE coach
   SET coachtoolNo = t.toolNo 
  FROM tool t 
 WHERE t.registNo = 'R123'  
   AND coach.forename ='Will'
   AND coach.hsurname = 'smith';

你在问题​​中的上述内容是Coach和Tool之间的交叉连接,然后再与Coach交叉连接,导致每条记录都更新。