[英]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.