Как обновить мой столбец, если в другой таблице есть значение? - PullRequest
0 голосов
/ 29 января 2020

У меня есть две таблицы: таблица классов и учеников.

Таблица учеников содержит имя_стадента, идентификатор_класса и идентификатор_класса.

Таблица классов содержит класс_время, идентификатор класса с IsClassConduct.

Я хочу обновить столбец таблицы классов IsClassConduct Y, если его время и class_id существуют в таблице учеников

enter image description here

enter image description here

и желаемый результат будет равен

enter image description here

Ответы [ 3 ]

2 голосов
/ 29 января 2020
UPDATE ClassTable c
SET c.IsClassConduct = CASE WHEN EXIST ( SELECT 1
                                         FROM StudentTable s
                                         WHERE s.class_id = c.class_id
                                           AND INSTR(s.class_time, c.class_time) > 0 )
                            THEN 'Y'
                            ELSE 'N' 
                            END

?

0 голосов
/ 29 января 2020

Вы также можете использовать MERGE:

merge into class A using (select class_id,class_time from student)B 
on (A.class_id=B.class_id and instr(B.class_time,A.class_time)>0) 
when matched then update set A.IsClassConduct='Y';

Вы также можете использовать CONTAINS (B.class_time, A.class_time)> 0 вместо INSTR, но для этого вам нужно будет создать INDEX.

0 голосов
/ 29 января 2020
update classTable set IsClassConduct = 'Y'
where (Class_time,class_id) in (select class_time,class_id from student_talbe);

ИЛИ Вы можете сделать это также с помощью внутреннего соединения.

...