我有兩個父/子關係的表。我想用孩子的數據更新父母。然而,假設有2個孩子,我希望能夠選擇哪個孩子用於更新,這取決於孩子的其他列。 這是我到目前爲止: 家長:@test 孩子:@exdat 預期的結果,更新後的父級結果應該只包含大寫字母。我想更新與孩子的一些數據父,但如果存在一個以上的,我寧願選擇一個孩子P1超過P2超過P4帶有加入的TSQL更新語句
DECLARE @test TABLE
(
id int,
val char(1)
);
DECLARE @exdat TABLE
(
id int,
dval char(1),
dimp char(2)
);
INSERT INTO @test (id,val)
SELECT 1,'a'
UNION ALL SELECT 2,'b'
UNION ALL SELECT 3,'c'
UNION ALL SELECT 4,'d'
UNION ALL SELECT 5,'e'
UNION ALL SELECT 6,'f'
UNION ALL SELECT 7,'g'
;
INSERT INTO @exdat (id,dval,dimp)
SELECT 1,'A','p1'
UNION ALL SELECT 2,'B','p3'
UNION ALL SELECT 3,'C','p1'
UNION ALL SELECT 4,'D','p2'
UNION ALL SELECT 5,'E','p2'
UNION ALL SELECT 6,'F','p3'
UNION ALL SELECT 7,'w','p2'
UNION ALL SELECT 7,'g','p3'
UNION ALL SELECT 7,'G','p1'
UNION ALL SELECT 7,'z','p4'
;
UPDATE @test SET
val = e.dval
FROM
@test t
INNER JOIN @exdat e ON t.id = e.id
;
SELECT * FROM @test;
Result:
1 A
2 B
3 C
4 D
5 E
6 F
7 w <-- problem illustrated here
這「一DIMP,P2 P3上和P3 w「可能是w,g,G,z中的任何一個值。所以我問我如何根據其他專欄優先考慮孩子選擇?
DBMS這是什麼道理呢? – 2011-04-01 21:45:59