SQL UPDATE疑问:如何更新JOB_ID包含'MAN'的数据行
解决JOB_ID包含'MAN'的SQL更新问题
我懂你遇到的问题了——原来的更新语句用了精确匹配JOB_ID='MAN',但实际数据里的JOB_ID都是MK_MAN、SK_MAN这类包含'MAN'的字符串,所以精确匹配找不到对应的行,自然没法完成更新。
你只需要把条件改成模糊匹配就行,用SQL的LIKE操作符配合通配符%来实现:
UPDATE COPY_EMPLOYEES SET SALARY=(SELECT SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 142) WHERE JOB_ID LIKE '%MAN';
简单解释下这个写法:
LIKE是SQL专门用于模糊字符串匹配的操作符%是通配符,代表任意长度的任意字符(包括0个字符)- 这里的
'%MAN'会匹配所有以'MAN'结尾的JOB_ID,正好对应你提到的MK_MAN和SK_MAN - 如果之后遇到JOB_ID中'MAN'在中间或者开头的情况(比如
MANAGER、MAN_MK),可以改成'%MAN%',这样就能匹配**任何位置包含'MAN'**的JOB_ID
- 这里的
另外提醒你一下:要确保子查询SELECT SALARY FROM EMPLOYEES WHERE EMPLOYEE_ID = 142能返回唯一的薪资值,不然有些数据库会因为子查询返回多行而报错哦。
内容的提问来源于stack exchange,提问作者Gerald
相关产品推荐
相关产品推荐

