[英]Update Multiple Values in a SQL query based on row values
您必須將表連接到自身以設置它的不同記錄。
UPDATE A
SET A.Value = B.Value
FROM
mytable A
INNER JOIN mytable B
ON A.Name = B.Name
WHERE
A.Date = '2022-07-01' AND
B.Date = '2022-08-01'
如果您想在整個月的相應日期執行此操作,您可以像這樣更改查詢
UPDATE A
SET A.Value = B.Value
FROM
mytable A
INNER JOIN mytable B
ON A.Name = B.Name AND DAY(A.Date) = DAY(B.Date)
WHERE
YEAR(A.Date) = 2022 AND MONTH(A.Date) = 7 AND
YEAR(B.Date) = 2022 AND MONTH(B.Date) = 8
一整年你會寫
...
ON A.Name = B.Name AND
DAY(A.Date) = DAY(B.Date) AND MONTH(A.Date) = MONTH(B.Date) - 1
WHERE
YEAR(A.Date) = 2022 AND
YEAR(B.Date) = 2022
多年來:
...
ON A.Name = B.Name AND
DAY(A.Date) = DAY(B.Date) AND
MONTH(A.Date) = MONTH(B.Date) - 1 AND
YEAR(A.Date) = YEAR(B.Date)
但是,如果月份在不同年份,這種簡單的方法就不起作用。 而且每個月都有不同的天數。 由於我不知道您的真實用例,因此我不會在這里詳細介紹。
而不是寫SET A.Value = B.Value
您可以簡單地寫SET Value = B.Value
因為目標表是在UPDATE A
中指定的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.