第一种方式:更新表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