-1

選択が更新なしで正常に機能し、更新が選択なしで正常に機能したという問題がありますが、両方のコードを組み合わせると、私に何の反応もありません(機能しません-エラーなし)

UPDATE Table1 
SET 
l2p= 0.207 * (SELECT DUM FROM Table2 WHERE [no] < 1389)
WHERE [no] < 1389 

見てくれてありがとう

4

2 に答える 2

1

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

于 2013-09-29T19:12:27.490 に答える