我有一個問題,我的選擇工作正常,沒有更新 和我的更新工作正常,沒有選擇 ,但是當我把兩個我的代碼不做任何反應給我(不工作 - 沒有錯誤)如何更新使用JOIN與另一個表
UPDATE Table1
SET
l2p= 0.207 * (SELECT DUM FROM Table2 WHERE [no] < 1389)
WHERE [no] < 1389
由於看到任何幫助
我有一個問題,我的選擇工作正常,沒有更新 和我的更新工作正常,沒有選擇 ,但是當我把兩個我的代碼不做任何反應給我(不工作 - 沒有錯誤)如何更新使用JOIN與另一個表
UPDATE Table1
SET
l2p= 0.207 * (SELECT DUM FROM Table2 WHERE [no] < 1389)
WHERE [no] < 1389
由於看到任何幫助
嘗試聲明一個變量來保存SELECT
語句的結果。
DECLARE @DUM INT
SET @DUM = (SELECT ISNULL(DUM, 1) FROM Table2 WHERE [no] < 1389)
UPDATE Table1
SET
l2p= 0.207 * @DUM
WHERE [no] < 1389
如果你有多個記錄,這是不行的,你需要加入對Table2
...
UPDATE t
SET t.l2p = 0.207 * ISNULL(t2.DUM, 1)
FROM Table1 t INNER JOIN Table2 t2
ON t.[no] = t2.[no]
WHERE t.[no] < 1389
你真的應該使用存儲過程,如下...
CREATE PROCEDURE [dbo].[sprocName]
@No INT
AS
BEGIN
SET NOCOUNT ON;
UPDATE t
SET t.l2p = 0.207 * ISNULL(t2.DUM, 1)
FROM Table1 t INNER JOIN Table2 t2
ON t.[no] = t2.[no]
WHERE t.[no] < @No
END
要運行存儲的過程中,使用EXEC sprocName @No=1389
感謝幫助我不使用JOINT befor它(所以我必須嘗試使用聯合感謝很多)你幫忙完整 –
這是一次性更新,或者是否可能改變?[否]?如果是這樣,你應該使用存儲過程 – christiandev
是否應該在我的代碼中使用「[no]」鍵? –
你應該使用JOIN
:
UPDATE Table1
SET Table1.l2p = 0.207 * Table2.DUM
FROM Table1 JOIN Table2 ON Table1.[no] = Table2.[no]
WHERE Table1.[no] < 1389
謝謝,但我不知道如何使用它:X –
有一個錯字,現在嘗試。 –
然後你應該學習,這是你需要的,不要只是尋找一個臨時解決方案。 –
你想達到什麼目的? –
我很驚訝,你沒有得到錯誤。你應該得到子查詢返回多個行錯誤 – DevelopmentIsMyPassion
可能的重複[我怎樣才能做一個與JOIN UPDATE語句在SQL?](http://stackoverflow.com/questions/1293330/how-can-i-do-an -update-statement-with-join-in-sql) –