我在oracle中具有如下表结构:
create table uet_tmp_course
(
"COURSE_ID" NUMBER(4,0) NOT NULL ENABLE,
"CODE" VARCHAR2(10 BYTE) NOT NULL ENABLE,
"TITLE" VARCHAR2(50 BYTE) NOT NULL ENABLE,
"CREDIT_HRS" NUMBER(4,2) NOT NULL ENABLE,
"LEVEL_ID" NUMBER(2,0),
"STATUS" NUMBER(2,0),
"COURSE_TYPE_ID" VARCHAR2(50 BYTE),
"EQUIVALENCE" VARCHAR2(10 BYTE),
"LAB_CODE" VARCHAR2(10 BYTE),
CONSTRAINT "PK_COURSE1" PRIMARY KEY ("COURSE_ID"),
CONSTRAINT "UK_COURSE_CODE1" UNIQUE ("CODE")
);
我想用course_id而不是代码更新lab_code列的值(即第8列)。例如,在第一行而不是“ SE-101L”中,我想要有“ 102”,即“ SE-101L”的course_id。我尝试了联接,但是它们会导致错误,例如缺少括号或单行查询返回多行。如果有人可以帮助我,我会很高兴。 谢谢。
答案 0 :(得分:1)
update uet_tmp_course set lab_code = (select course_id from uet_tmp_course where code = lab_code)
应该做您想要的
答案 1 :(得分:1)
这将更新对应的course_id
引用的lab_code
。
UPDATE a
FROM uet_tmp_course a
INNER JOIN uet_tmp_course b
ON a.LAB_CODE = b.CODE
SET a.LAB_CODE = b.course_id;
对于Oracle
UPDATE
(SELECT t1.LAB_CODE as OLD, t2.course_id as NEW
FROM uet_tmp_course t1
INNER JOIN uet_tmp_course t2
ON t1.LAB_CODE = t2.CODE
) t
SET t.OLD = t.NEW
您还可以采取其他措施来防止每次都更新行(也请注意在您的应用中对此进行管理):
alter table uet_tmp_course
add constraint FK_uet_tmp_course_lab
foreign key (lab_code) references uet_tmp_course(course_id)
答案 2 :(得分:0)
您可以尝试
UPDATE uet_tmp_course
SET lab_code = (select course_id
from uet_tmp_course
where code=lab_code);
答案 3 :(得分:0)
您应使用以下语法( tab 区分 tab.lab_code 列来自外部表):
update uet_tmp_course tab
set tab.lab_code = (select course_id
from uet_tmp_course
where code = tab.lab_code)