1.情景展示
现在有一需求:
如上图所示,需将指定记录集的指定字段更新成该条记录的对应的字段值,使用一条sql如何实现?
2.原因分析
要更新的记录及字段:
将要更新的字段值:
3.oracle
UPDATE CZ_UNITINFO SET ( APPID, APPKEY, CODE_CZ, CRECODE, `X509`, BILLCODE )=( SELECT T2.APPID, T2.APPKEY, T2.CODE_CZ, T2.CRECODE, T2.`X509`, T2.BILLCODE FROM CZ_UNITINFO T2 WHERE T2.INVOICINGPARTYNAME = '平舆县阳城镇中心卫生院' ) WHERE INVOICINGPARTYNAME LIKE '%尉氏%';
4.mysql
需要使用内连接INNER JOIN才能实现:
把查询结果放到内联接中,我这里只有单条查询结果,如果是多条查询结果的话,要想实现一一对照进行更新,where条件就需要将t2表和t1表进行关联了;
UPDATE CZ_UNITINFO2 T1 INNER JOIN ( SELECT APPID, APPKEY, CODE_CZ, CRECODE, `X509`, BILLCODE FROM CZ_UNITINFO2 WHERE INVOICINGPARTYNAME = '阿里巴巴' ) T2 SET T1.APPID = T2.APPID, T1.APPKEY = T2.APPKEY, T1.CODE_CZ = T2.CODE_CZ, T1.CRECODE = T2.CRECODE, T1.`X509` = T2.`X509`, T1.BILLCODE = T2.BILLCODE WHERE T1.INVOICINGPARTYNAME LIKE '%腾讯%';