sqlserver join多条明细记录更新主记录

首先、这样的更新是可以被执行的,即,可以写出一个这个样update语句,但是实际执行过后,主记录究竟被更新为从记录的那个值,并不能明确确定。

退一步讲,即便在SQL Server相关语法及规则的规定的前提下可以确定主记录被从记录的那个值更新了,但是实际中也不要这样用,这样用,太艰涩,后续维护让人很难理解,再有也不能保证这样潜在隐含的语法规则将来会不会变掉,所以不要这样写。


DECLARE @a TABLE (
    id INT
    ,id_value VARCHAR(100)    
)

DECLARE @b TABLE (
    id INT 
    ,cur_value VARCHAR(100)    
)

INSERT INTO @a(id)
SELECT 1
UNION
SELECT 2

INSERT INTO @b(id,cur_value)
SELECT 1,'jim'
UNION
SELECT 1,'tom'
UNION
SELECT 1,'lily'
UNION
SELECT 2,'max'
UNION
SELECT 2,'min'

SELECT *
FROM @a a
    JOIN @b b
        ON b.id = a.id

UPDATE a
SET id_value = b.cur_value
FROM @a a
    JOIN @b b
        ON b.id = a.id
        
SELECT *
FROM @a
 

 

====

id    id_value    id    cur_value
1    NULL    1    jim
1    NULL    1    lily
1    NULL    1    tom
2    NULL    2    max
2    NULL    2    min

=======

id    id_value
1    jim
2    max

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值