我知道在这里和互联网上已经创建了有关该主题的许多主题。但是,我真的无法就两个语句之间的区别得出最终的结论!我的意思是,尝试并尝试可以通过查询获得所需的所有结果,但是我真的无法完全控制刀具!
我正在考虑自己是一个非常优秀的程序员和一个非常出色的SQL-ista,对此我感到有些as愧…
这是一个例子:
因此,如果我想显示所有类别及其页面,则意味着这两个类别都包含页面,而没有页面,则必须执行以下操作:
FROM category
LEFT JOIN web_page ON ( web_page.category_id = category.category_id AND web_page.active = "Y" )
因此,如果一个类别没有页面,那么我将在该类别的记录中看到web_page_id为NULL。
但是,如果我这样做:
FROM category
LEFT JOIN web_page ON ( web_page.category_id = category.category_id )
...
WHERE web_page.active = "Y"...
我只会选择至少具有一个web_page的类别…但是为什么?
这只是一个例子……我想永远了解一次这种差异!
谢谢你。
为了使查询能够按预期工作,请将条件放入ON
子句中:
FROM category
LEFT JOIN web_page ON web_page.category_id = category
and web_page.active = "Y"
起作用的原因是(对于大多数数据库,但不是全部)WHERE
子句在连接行 之后
过滤行。如果该联接未导致网页行联接(因为该类别没有网页),则该网页的所有列均为null
,并且任何值(如"Y"
)与a的比较null
均为假,因此这些非-
合并的行将被过滤掉。
但是,通过将条件移到ON
子句中,将在进行 连接时 执行条件,以便您仅 连接的 行active = "Y"
,但是如果没有这样的行,则只会得到左侧的连接null
网页。
此版本的查询实际上是在说:“给我所有类别及其 活动的 网页(如果有)”
请注意,我说的是“大多数数据库” …例如mysql足够聪明,可以理解您要执行的操作,并且如果在mysql上运行,查询将按预期工作。
我对CloseableHttpClient管理的连接有问题。Spring服务管理纽约连接: 当执行不成功时,我的setPayment方法最多调用3次。有时在第一次执行后,我的方法挂起而没有响应。欢迎任何建议。
当我添加一个左连接来获取外部表的计数时,它将我其他左连接表的总和值与计数相乘,我也不能在这里使用不同的总和,因为两个值可以是相同的:
本文向大家介绍说下左连接和右连接相关面试题,主要包含被问及说下左连接和右连接时的应答技巧和注意事项,需要的朋友参考一下 比如有两张表 A,B。左连接是把符合条件的所有A表的内容列出来,B表如果没有内容匹配用NULL代替。 右连接是符合条件的所有B表的内容列出来,A表如果没有内容匹配用NULL代替
有什么让我怀念的吗?如果我必须手动关闭连接,是不是至少可以从Javers那里收到一个不再需要连接的通知?
我想返回每个行,并为和提供空值,如果它们没有。当我执行此查询时,我得到空结果。如果我使用而不是,我得到不正确的结果。如何过滤左连接,以便如果没有匹配,我仍然得到返回的p行与和的空值? 注:我在末尾添加了,仅用于测试目的。
内连接,显示两个表中有联系的所有数据; 左链接,以左表为参照,显示所有数据,右表中没有则以null显示 右链接,以右表为参照显示数据,,左表中没有则以null显示