我在学校参加了一门数据库课程。老师给了我们一个简单的练习:考虑下面这个简单的模式:
Table Book:
Column title (primary key)
Column genre (one of: "romance", "polar", ...)
Table Author:
Column title (foreign key on Book.title)
Column name
Primary key on (title, name)
在这些问题中,有以下一个:
编写一个查询语句,返回写过浪漫小说的作者。
我提出了以下答案:
select distinct name
from Author where title in (select title from Book where genre = "romance")
然而老师说这是错误的,正确答案应该是:
select distinct name
from Book, Author
where Book.title = Author.title
and genre = "romance"
当我寻求解释时,我得到的只是一个"如果你更加关注课程,你就会知道为什么了"。太棒了。那么,我的答案为什么不正确?这些查询之间到底有什么区别?它们在数据库引擎层面上具体做了什么?