mysql通过对比一张表的数据来修改另一张表两种sql的对比

欧阳小白 4月前 ⋅ 122 阅读

1.任务要求:
有两张表,student1和student2,要求对比student2中的数据,将name相同的student1中的score换成student2中的score,同时保留student1中name不同的score

student1(学生表一)

student2(学生表二)


在网上搜出了两种选择:
1.UPDATE student1 a SET score = (SELECT b.score FROM student2 b WHERE b.name = a.name)
2.UPDATE student1 a,student2 b SET a.score=b.score WHERE a.name = b.name

其实这两种修改方式得出来的结果并不相同,如果要实现任务需求得选用第二种方式

下面我将这两种语句的执行结果进行了对比:

第一种:
UPDATE student1 a SET score = (SELECT b.score FROM student2 b WHERE b.name = a.name)
他的执行结果为

虽然名字相同的分数得到了正确的修改,但是名字不同的分数被修改成了空值

第二种:
UPDATE student1 a,student2 b SET a.score=b.score WHERE a.name = b.name
他的执行结果为

他仅仅是把名字相同的分数改掉了,依然保留了名字不同分数

所以这两种sql的执行要注意使用场合


全部评论: 0

    我有话说:

    咨询问题

    点击这里给我发消息

    淘宝咨询

    博主承接代做业务

    真·送云服务器

    咨询博主