题解 | #将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005#
将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
http://www.nowcoder.com/practice/2bec4d94f525458ca3d0ebf3bc8cd240
mysql replace用法:
mysql并不是简单的替换。若replace中的数据不存在,则在表中建立新行。若replace数据存在,则删除原行建立新行。而建立的新行中没有被重新定义的数据为空/默认值。而若某字段有非空约束,但没有被定义,则系统会报错。replace语句不能跟where语句。
具体可参考https://www.yiibai.com/mysql/replace.html
思路一:题目要求其他数据不变,且不能之间使用update语句,由于我们知道建表函数,知道将id=5以及emp_no=10001的行数据的其他数据,所以可以直接用replace语句,但此方法不可取,因为在实际应用中,我们不可能先查找出该行对应的其他数据,这样效率极低,且只能对该行数据有效。
replace into titles_test (id,emp_no,title,from_date,to_date) values('5', '10005', 'Senior Engineer', '1986-06-26', '9999-01-01')
思路二:
题干中要求不能直接使用update语句,没说不能使用
这个思路我也是看的前辈们的,就我本人来说并不知道replace还能
replace into 表(字段名,old value,new value)这么用
由于要求其他字段不变,所以主体还是update语句,从大表来说update只有emp_no;
那可变的就只有emp_no=?了
算了 我也不知道为什么emp_no =(replace (emp_no,10001,10005))
记住吧记住吧