2012-09-01 32 views
0

我试图从另一个表中更新表值。我想从productcode更新pstatusSQL更新函数不会抛出任何错误消息,但它不返回任何行

这里是我的代码(没有给出错误,结果0行):

UPDATE pstatus 
SET code=(select code FROM productcode) 

除此之外,我不能重新运行在SQL任何更新 - 它给没有错误,但返回0行(我在productcode表中有超过5行)。

+3

这个_should_给你一个'productcode'有一个以上的错误。你使用的是哪个数据库? – Oded

+0

“pstatus”表中是否有任何记录? – Guffa

+0

我正在使用sql。在pstatus上没有任何记录。 –

回答

0

在这种情况下,你有两个问题

  1. 你说你没有在pstatus任何行如果表中没有记录如何可以更新表行?

  2. 你的内部查询select code FROM productcode返回多于一行然后sql如何决定在该字段中设置值?

+0

你的ans帮助我。但是当我在产品代码中插入数据时,pstatus表格不能更新,你能解决这个问题吗? –

+0

如果要使自动更新使用触发器或将外键指定给另一个表 –

0

更新语句不返回行。您应该使用更类似的东西

Update pstatus 
    Set code=a.code 
    from productcode a 
where a.*somekeyfield* = *value* 

您必须确定您希望用作产品代码的哪一条记录作为更新的基础。什么somekeyfield应该是你需要确定的东西。

+0

我试过这个,但我给了我相同的结果。 0行 –

+0

如果您在pstatus中没有记录,则没有任何更新。您必须先将记录插入pstatus,然后*然后*可以根据需要更新它们。 –

+0

实际上一些DBMS *可以从UPDATE语句返回行(通过使用'RETURNING'子句) –

0

更新状态修改不会添加记录,它只会更新表中已存在的记录。

update查询实际上是对表中的所有记录进行了udpate处理,但由于没有记录,所以更新的记录数为零。

如果你想添加的记录,你应该使用一个insert查询,而不是:

insert into pstatus (code) 
select code from productcode 
+0

你可以试试这个,它可以工作,但是我的产品代码将会继续,而且其他表格也会从其中插入数据到pstatus。在插入案例数据将被复制 –

+0

@RahatIslamKhan:你的意思是“将继续”是什么意思?如果你想要其他表的数据,你可以使用'join'或'union'将它们添加到'select'中。 – Guffa

相关问题