我需要一些帮助来修复UPDATE语句,该语句将使用引用表中的唯一值填充主表中的行(即,引用表中的任何值只能在主表中出现一次)。
具体来说,我有两个表: 学生(名字,assigned_topic) 主题(主题)
每个学生都需要分配一个主题(无关紧要),每个主题只能分配给一个学生。
以下是我到目前为止无法执行的操作:
create table students ( first_name varchar(16), assigned_topic varchar(16) );
create table topics ( topic varchar(16) );
insert into students values ('Ann', NULL), ('Bob', NULL), ('Carl', NULL);
insert into topics values ('Math'), ('History'), ('Literature');
update students
set students.assigned_topic = ( select topics.topic
from topics
where topics.topic not in
( select assigned_topic
from (select * from students) inner_query )
limit 1 );
我怀疑UPDATE一次提交所有操作,而不是逐行提交,因此内部SELECT找不到任何东西。
我该如何解决?感谢您的任何建议。