0
UPDATE MyTable SET Status = (SELECT CASE WHEN COUNT(*) > 0
THEN 0
ELSE 1
END
FROM MyTable
WHERE Status = 1)
WHERE RowNumber BETWEEN 1 AND 5
ORDER BY RowNumber
テーブルと同じですそれ以外の場合、RowNumber 1のみが0に更新され、RowNumber 2〜5は0に更新されます。更新テーブルには、私がやりたいことがある場合、私は、5にRowNumber関数1を更新している間= 1 状況でたMyTableに一つだけの行があるでしょうで、サブクエリで
ただし、前述のクエリはStatus = 1の既存レコードではありません。ワーキング。サブクエリはクエリ全体の前に実行され、サブクエリの結果は静的であるため、別のクエリが更新された後に新しい結果が1つのレコードとして与えられないことを意味します。
このクエリでは、ステータス= 1のテーブルに行がない場合、すべてのRowNumber 1〜5がステータス= 1で更新されます。これは私が期待しているものではありません。
私がしたいことは、テーブルにステータス= 1の行が1つしかないことです。 status = NULLの新しい行が挿入されました。後でステータス= 0または1で更新されます。ステータス= 1の既存の行がある場合は、明らかに新しい更新は0に設定されます。いいえがある場合は、更新行の中で、それらの1つだけが1に設定されます。これは理解できますか? –