SQL嵌套查询,它是如何工作的

时间:2015-09-11 08:28:48

标签: sql oracle nested

我对如何编译和运行嵌套查询有疑问。举个例子,我有一个包含四个实体的书桌。 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?

时,为什么没有区别?

1 个答案:

答案 0 :(得分:1)

编译器,如你所说,将运行第一个查询,然后对于每个结果,它将运行查询。

where b1.book = book.Isbn13表示它将匹配来自查询的b1.book与循环的当前行的外部Isbn13结果。