我有两个父/子关系的表。我想用孩子的数据更新父母。然而,假设有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