2011-04-28 62 views

回答

3

With是用来“供应额外加入的条件”,这意味着它被添加到加入和不where子句:

from Cat as cat 
    left join cat.kittens as kitten 
    with kitten.bodyWeight > 10.0 

将被转换为这样的事;

from Cat as cat 
    left outer join Cat as kitten 
    on cat.id = kitten.mother_id 
     and kitten.bodyWeight > 10.0 

而此

from Cat as cat 
    left join cat.kittens as kitten 
where kitten.bodyWeight > 10.0 

被转换为

from Cat as cat 
    left outer join Cat as kitten 
    on cat.id = kitten.mother_id 
where 
    kitten.bodyWeight > 10.0 
+0

太棒了,所以细节!让我试试看谢谢 – EeE 2011-04-28 08:30:02

+1

在这个例子中,结果是一样的吗?我对吗?你能否提供一些具有不同结果的例子? – EeE 2011-04-28 08:33:34

+0

@ user380690:不,因为左外部连接,它* *不会相同。第一个查询返回数据库中的所有猫,如果它们的体重超过10的小猫,它会加入它们,如果没有这样的猫,则将小猫的列设置为null(但仍然返回猫)。第二个查询只返回*有小猫体重超过10的猫。 – 2011-05-03 05:55:05

1

取代 “与” 和 “其中” 限制了结果猫该具有小猫与体重> 10.0。 使用“与”甚至猫没有小猫。