選択が更新なしで正常に機能し、更新が選択なしで正常に機能したという問題がありますが、両方のコードを組み合わせると、私に何の反応もありません(機能しません-エラーなし)
UPDATE Table1
SET
l2p= 0.207 * (SELECT DUM FROM Table2 WHERE [no] < 1389)
WHERE [no] < 1389
見てくれてありがとう
選択が更新なしで正常に機能し、更新が選択なしで正常に機能したという問題がありますが、両方のコードを組み合わせると、私に何の反応もありません(機能しません-エラーなし)
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