INSERT INTO ... SELECT ... FROM ...在哪里工作?

Al *_*l C 0 mysql sql database sqlite

假设我有一个表中STUDENT的列,包括ID,name,email,和advisorID.我有第二个表格ADVISOR,其中包括IDname.STUDENT.AdvisorID是一把外键.插入学生时,必须有一个指向一个学生的键ADVISOR.

但是,从应用程序插入学生时,您只有一个ADVISOR名称.换句话说,您的字符串包含特定学生的姓名和电子邮件,以及顾问的姓名,但不包括顾问ID.

不知何故,我无法理解如何做到这一点.我知道这是一种常见的情况,我甚至在堆栈溢出时发现了一两个类似的问题.我知道我们正在谈论INSERT INTO ... SELECT ... FROM .. WHERE.我假设WHERE子句是advisor.name ='anAdvisorName',但我正在努力解决这样一个事实:插入的一些信息来自一个表,而另一些则不是.(关于这种陈述的讨论似乎集中在所有插入的数据来自第二个表的情况.这不是我所说的.)

ps为简单起见,请不要担心重复的条目,多个具有相同名称的顾问等.

cat*_*ood 6

一种可能的方式:

insert into student (name, email, advisorID)
    values (
        'Fred Smith',
        'fred@example.com',
        (select id from advisor where name = 'Lord Voldemort'))
Run Code Online (Sandbox Code Playgroud)