1. 程式人生 > >mysql通過對比一張表的資料來修改另一張表兩種sql的對比

mysql通過對比一張表的資料來修改另一張表兩種sql的對比

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的執行要注意使用場合