这个查询意味着什么
select fname, lname
from Owner
where not exists
(select fname, lname
from Trainer)
我的理解:它从表所有者返回fname和lname,这些名称在表培训师中不存在? 我是对的吗?
答案 0 :(得分:3)
查找Owner
表中但不在Trainer
表中的人员的姓名。
答案 1 :(得分:2)
从owner
表中获取trainer
表中不存在的所有人的列表,这是一种相当蹩脚的方法。
因此,如果Owner
表包含
----------------
fname | lname
----------------
clark | kent
lois | lane
peter | parker
和Trainer表包含
----------------
fname | lname
----------------
peter | parker
hal | jordan
你应该得到一个结果集:
----------------
fname | lname
----------------
clark | kent
lois | lane
<强>更新强>
实际上,如果Trainer表中有任何记录,您的查询将不会返回任何内容。你可能应该使用:
select fname, lname
from Owners
where not exists (
select fname, lname
from trainers
where fname=Owners.fname
and lname=Owners.lname
)
答案 2 :(得分:1)
查询有两部分:'select'和'where'。 先看看哪里部分:
where not exists
(select fname, lname from Trainer)
如果Trainer表中没有任何内容,则此where子句的计算结果为“true”,如果存在某些内容,则为“false”。现在看看'选择'部分:
select fname, lname from Owners
这将选择“所有者”表中的所有行。
将它们组合在一起:查询选择所有者表IF中的所有行(并且仅当在Trainer表中没有任何内容时) - 如果存在则没有任何内容。