簡體   English   中英

SQL-更新表中的多行

[英]SQL - Update multiple rows in table

我正在嘗試更新表中的多行,但是我無法使其工作到一次更新所有行的位置。 我對如何實現這一目標感到迷茫。

UPDATE ENROLMENT
INNER JOIN STUDENT ON ENROLMENT.REGNUM = STUDENT.REGNUM
INNER JOIN TOPIC ON ENROLMENT.TOPIC_NUMBER = TOPIC.TOPIC_NUMBER
SET GRADE='87' WHERE FAMILY_NAME='SMITH' and TOPIC_NAME='Internet Computing'
SET GRADE='84' WHERE FAMILY_NAME='SMITH' and TOPIC_NAME='Programming Language Concepts'
SET GRADE='60' WHERE FAMILY_NAME='BLOGGS' and TOPIC_NAME='Computer Networks'
SET GRADE='55' WHERE FAMILY_NAME='BLOGGS' and TOPIC_NAME='Internet Computing'
SET GRADE='72' WHERE FAMILY_NAME='BLOGGS' and TOPIC_NAME='Programming Language Concepts'
SET GRADE='63' WHERE FAMILY_NAME='BLACK' and TOPIC_NAME='Internet Computing';

您可以使用case-when,在更新集部分中,如下所示,請注意,您可以在末尾提供else條件,以便在不匹配任何條件時仍可以使用某些值進行更新。 另外,最好在集合和案例中指定aliasname.columnname以使列名具有更好的可讀性,更重要的是避免歧義。

UPDATE ENROLMENT
INNER JOIN STUDENT ON ENROLMENT.REGNUM = STUDENT.REGNUM
INNER JOIN TOPIC ON ENROLMENT.TOPIC_NUMBER = TOPIC.TOPIC_NUMBER
set GRADE = 
case 
 when FAMILY_NAME='SMITH' and TOPIC_NAME='Internet Computing' then 87
 when FAMILY_NAME='SMITH' and TOPIC_NAME='Programming Language Concepts' then 84
 when FAMILY_NAME='BLOGGS' and TOPIC_NAME='Computer Networks' then 60
 when FAMILY_NAME='BLOGGS' and TOPIC_NAME='Internet Computing' then 55
 when FAMILY_NAME='BLOGGS' and TOPIC_NAME='Programming Language Concepts' then 72
 when FAMILY_NAME='BLACK' and TOPIC_NAME='Internet Computing' then 63
end;

這是使用別名

UPDATE ENROLMENT e
INNER JOIN STUDENT s ON e.REGNUM = s.REGNUM
INNER JOIN TOPIC t ON e.TOPIC_NUMBER = t.TOPIC_NUMBER
set e.GRADE = 
case 
 when s.FAMILY_NAME='SMITH' and t.TOPIC_NAME='Internet Computing' then 87
 when s.FAMILY_NAME='SMITH' and t.TOPIC_NAME='Programming Language Concepts' then 84
 when s.FAMILY_NAME='BLOGGS' and t.TOPIC_NAME='Computer Networks' then 60
 when s.FAMILY_NAME='BLOGGS' and t.TOPIC_NAME='Internet Computing' then 55
 when s.FAMILY_NAME='BLOGGS' and t.TOPIC_NAME='Programming Language Concepts' then 72
 when s.FAMILY_NAME='BLACK' and t.TOPIC_NAME='Internet Computing' then 63
end;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM