我对如何编译和运行嵌套查询有疑问。举个例子,我有一个包含四个实体的书桌。 bookOwner,Isbn13,numofCopy,availability,bookOwner是主键。 numofCopy是指所有者拥有的副本数。可用性是指该书是否可以免费借用。
让我们说,例如,我想找到可借用并且副本数量最多的书籍。
select Isbn13, sum(numofCopy) as numofbook from book
where AVAILABLE = 'TRUE'
group by book.Isbn13
having sum(numofCopy) >= all
(
select sum (b1.numofcopy) from book b1
where b1.Isbn13 = book.Isbn13
);
我有3个问题。
1)编译器首先运行哪个查询?嵌套还是外层?
2)最后一句话是什么部分,“其中b1.Isbn13 = book.Isbn13” 在这个查询中播放?
3)当我将where语句的顺序更改为“where book.Isbn13 = b1.Isbn13?
时,为什么没有区别?答案 0 :(得分:1)
编译器,如你所说,将运行第一个查询,然后对于每个结果,它将运行查询。
where b1.book = book.Isbn13
表示它将匹配来自查询的b1.book与循环的当前行的外部Isbn13结果。