SQL 表与表之间的数据更新不同方式

第一种方式:更新表GIFTS 更新礼品名称 (只能写GIFTS.DGF_NAME,为什么不能写别名呢? 原来update不允许 带有别名,那么我们如何改进)
UPDATE GIFTS
SET 
GIFTS.DGF_NAME =gift.DGF_NAME
FROM  new_gifts gift
where  GIFTS.DGF_ID= gift.DGF_ID



第二种方式:更新表 别名g 写法同上,只是把表名写在了from语句之后,发现别名可用了:)
UPDATE g
SET 
g.DGF_NAME =gift.DGF_NAME
FROM GIFTS g, new_gifts gift
where  g.DGF_ID= gift.DGF_ID

 第三种方式:其中一个字段全更新,另外三个字段按条件更新
UPDATE T
SET T.LDD_STAY_ACCOUNT='Y'
        ,T.LDD_LNS_ID = CASE WHEN  LDD_LDB_ID=100 THEN '999' ELSE LDD_LNS_ID END
,T.LDD_COM_NAME_ENHANCE = CASE WHEN  LDD_LDB_ID=100 THEN '标准公司' ELSE LDD_COM_NAME_ENHANCE END
,T.LDD_COM_STATUS =CASE WHEN  LDD_LDB_ID=100 THEN  'Y' ELSE LDD_COM_STATUS END
FROM LOAD_DATA_DETAIL T
WHERE LDD_COM_NAME='测试公司'

  

MYSQL: 查询当前表更新当前表

UPDATE t_rawpersondata t,(SELECT rawId,CONCAT('00',imei) imei FROM `t_rawpersondata` WHERE areaName = '隧道进口') b
SET t.imei = b.imei
WHERE t.rawId = b.rawId
AND areaName = '隧道进口'
AND areaToken = '77B81CCE19A84694'
  第四种方式:多表关联更新,其中一张表对应的为多条记录
 UPDATE T 
 SET T.LEA_SFDC_ID = D1.LTD_SFDC_ID,
 T.LEA_SFDC_PRODUCT_CODE = D2.LTD_SFDC_ID , T.LEA_PUSH_STATUS = 'Y',T.LEA_PUSH_DATE=GETDATE() 
 FROM LEADS T 
 LEFT JOIN LEADS_TO_DO D1 ON T.LEA_ID = D1.LTD_LEA_ID AND D1.LTD_SFDC_TYPE = 'LEAD'
 LEFT JOIN  LEADS_TO_DO D2 ON T.LEA_ID = D2.LTD_LEA_ID AND D2.LTD_SFDC_TYPE = 'PRODUCT'
 WHERE T.LEA_ID=100


关闭SQLSERVER自增长模式插入。

SET IDENTITY_INSERT [tableName] ON

INSERT INTO XX

SET IDENTITY_INSERT [tableName] OFF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值