从另一个表更新具有唯一值的行

时间:2018-11-29 22:25:24

标签: mysql

我需要一些帮助来修复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找不到任何东西。

我该如何解决?感谢您的任何建议。

0 个答案:

没有答案