我正在尝试在表中创建一个可以存储多个值的列。
我的学生有id_std
和名为marks
的专栏,可以使用2,3,4
等多个值。我想更新此列表以添加另一个标记以生成2,3,4,5
,但我不知道如何。
我如何更新列marks
以添加新标记而不删除以前的值?这是我的代码:
CREATE OR REPLACE TYPE NumberList IS TABLE OF number(5);
/
DROP TABLE test;
CREATE TABLE test (
id_std int
, marks NumberList )
Nested table marks store as numere_necesare;
insert into test(id_std, marks )
values (1,NumberList(6,7,8));
答案 0 :(得分:3)
语法有点模糊,但基本上你需要用MULTISET运算符来操作嵌套表。
update test
set marks = marks multiset union all numberlist(42)
where id_std = 1
这将现有标记集与新集合连接(在本例中为一组)。这是a LiveSQL demo (free Oracle Technet account required)。
这种方法的优点是可以轻松地一次添加多个值:
update test
set marks = marks multiset union all numberlist(23, 69)
where id_std = 1
嵌套表格列原则上很聪明,但实际上很难处理。在SQL语句中使用它们会导致一些丑陋的SQL。如果您要使用它们,您需要熟悉所有MULTISET操作员。 Find out more
答案 1 :(得分:1)
可以试试这个:
insert into table( select marks from test where id_std = 1 ) values ( 5 );