我有兩個多行的表:
Table A
(TYPE - Num)
LA - 1
LA - 2
LA - 3
LA - 4
LA - 5
MB - 1
MB - 2
.
.
.
Table B
(TYPE - Num - NumLine)
LA - 1 - 1
LA - 1 - 2
LA - 1 - 3
LA - 1 - 4
LA - 2 - 1
LA - 2 - 2
LA - 2 - 3
LA - 2 - 4
LA - 3 - 1
LA - 3 - 2
LA - 4 - 1
LA - 5 - 1
MB - 1 - 1
MB - 1 - 2
MB - 1 - 3
MB - 2 - 1
.
.
.
我希望 NUM 從 LA 的特定數字開始,而 MB 則從不同的數字開始:例如:我希望 LA 從 12 開始,MB 從 20 開始,我希望此更改適用于兩個表,在相應的排。
Table A
(TYPE - Num)
LA - 12
LA - 13
LA - 14
LA - 15
LA - 16
MB - 20
MB - 21
.
.
.
Table B
(TYPE - Num - NumLine)
LA - 12 - 1
LA - 12 - 2
LA - 12 - 3
LA - 12 - 4
LA - 13 - 1
LA - 13 - 2
LA - 13 - 3
LA - 13 - 4
LA - 14 - 1
LA - 14 - 2
LA - 15 - 1
LA - 16 - 1
MB - 20 - 1
MB - 20 - 2
MB - 20 - 3
MB - 21 - 1
.
.
.
我怎樣才能做到這一點?我想將此應用于很多行。
uj5u.com熱心網友回復:
如果是供選擇,您可以嘗試以下操作
Select Type, Num
From(
Select *,CASE WHEN TYPE = 'LA' and Num >11 then 1
WHEN TYPE = 'MB' and Num >19 then 1
ELSE 0 END AS flag
FROM TableA
) A
Where flag =1

uj5u.com熱心網友回復:
如果兩個表之間有外鍵,則應將其更改為ON UPDATE CASCADE.
ALTER TABLE TableB ADD CONSTRAINT fk_Type_Num
FOREIGN KEY (Type, Num)
REFERENCES TableA(Type, Num)
ON UPDATE CASCADE;
然后你可以簡單地做
UPDATE TableA
SET Num = Num CASE WHEN Type = 'LA' THEN 11 ELSE 19 END
WHERE Type IN ('LA','MB');
這也會自動更新TableB。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331626.html
標籤:sql sql-server
上一篇:添加組的差異計數(*)
