全的方式浏览你的to-one关系,隐式生成 LEFT JOIN
操作,而不必一直考虑连接谓词,以及正确的连接顺序。考虑一下这个Sakila数据库查询,如果SQL原生支持隐式连接。
SELECT cu.first_name, cu.last_name FROM customer AS cu WHERE cu.address.city.country.country = 'Switzerland' 复制代码
它在本地SQL中被翻译成这个查询。
有需要大厂面经和面试技巧思维导图的朋友可以点进去了解一下,点击——【传送门】——即可!
SELECT cu.first_name, cu.last_name FROM customer AS cu JOIN address AS ad ON cu.address_id = ad.address_id JOIN city AS ci ON a.city_id = ci.city_id JOIN country AS co ON ci.country_id = co.country_id WHERE co.country = 'Switzerland' 复制代码
**注意:**从jOOQ 3.14开始支持内联,这取决于外键是否是强制性的/非空。默认行为是产生 LEFT JOIN
,这是隐式连接可选外键的正确方式。 隐式连接不是银弹。不是每一个 JOIN
图都可以完全转化为隐式连接的用法,也不是每一个隐式连接的用法都比本地SQL JOIN
图更容易阅读。但是有这种选择是很好的。特别是,