嗨,我需要以下问题的帮助:
根据多个团队的要求,Run Monash希望允许一个团队提供支持 几个慈善机构,如果他们愿意的话。如果一个团队确实支持多个慈善机构,他们必须提名, 一个慈善机构作为他们的主要慈善机构,他们将提供主要支持。 更改数据库以满足此要求。 做出此更改后,将"救世军"作为第二个慈善机构添加到1号团队。
团队表当前如下所示:
TEAMNO TEAMNAME CARNDATE TEAMNOMEMBER CHARNAME ENTRYID
---------- ------------------------------ --------- ------------ ------------------------------ ----------
1 Gentle Earth 04/APR/18 2 Amnesty International 5
2 Happy Feet 04/APR/18 2 Beyond Blue 14
3 Avengers 06/MAY/19 2 Salvation Army 37
4 Footloose 06/MAY/19 3 Salvation Army 38
5 Happy Feet 06/MAY/19 4 Amnesty International 30
这就是我尝试的
alter table team add (
seccharname VARCHAR2(30),
primechar VARCHAR2(30),
);
UPDATE team
INSERT into team (teamno,seccharname,primechar) VALUES ( values (1,'salvation army','Amnesty International');
不知道该怎么做才能满足提出的问题。
你的 alter 语句需要一点点更正。您已经有 CHARNAME 列,因此您只能将其重命名为 primechar。
ALTER TABLE team RENAME CHARNAME TO primechar;
然后只需更正您的更新语句 -
UPDATE team
SET seccharname = 'salvation army',
primechar = 'Amnesty International'
WHERE TEAMNO = 1;
我认为MERGE
语句最适合您的情况:
MERGE INTO team t
USING ( SELECT 1 as teamno,
'salvation army' as seccharname,
'Amnesty International' as primechar
FROM dual
) t2
ON (t2.teamno=t.teamno)
WHEN MATCHED THEN
UPDATE SET seccharname=t2.seccharname, primechar=t2.primechar
WHEN NOT MATCHED THEN
INSERT (teamno, seccharname, primechar)
VALUES ( t2.teamno, t2.seccharname, t2.primechar )
如果键列(teamno
( 匹配,将填充新添加的空列,否则它们将插入其余列(teamname
、carndate
、teamnomember
(的空值。