2012-09-01 31 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

相關問題