我正在使用Ingres 11.0 DB,不确定它是否在其他数据库引擎上具有相同的行为,但这里是它
SELECT *
FROM table1 t1
LEFT JOIN table2 t2
ON t1.id = t2.fk_id
WHERE t1.code = 'CODE1' AND t2.id_number = 12174;
它不会返回表1中的所有记录,但我使用的是左连接,它应该从T1返回aa记录,从t2只处理行,只返回1条记录
如果我将其中一个条件从where子句移动到join条件,它的开始将返回我所期望的结果
SELECT *
FROM TABLE1 t1
LEFT JOIN TABLE2 t2
ON t1.id = t2.fk_id
AND t2.id_number = 12174
WHERE t1.code = 'CODE1';
问题是为什么它不工作在哪里所有搜索条件在哪里子句,但工作时,我移动t2.id_number从哪里加入条件?
我想我知道答案,因为我在连接步骤中消除了t2中所有可能的变化,但现在不确定
您不应该在where条件中使用与左表相关的列(这用作内部联接)。请在related ON子句中移动左联接的条件
select *
FROM table1 t1
left join table2 t2
ON t1.id = t2.fk_id AND t2.id_number = 12174
WHERE t1.code = 'CODE1' ;
place条件是INNER JOIN子句的等效部分,这就是您有此行为的原因。
将条件添加到on子句意味着添加的条件也作为外部连接工作..
问题内容: 我已经尝试解决这个问题一段时间了,希望有人能帮助我。我有两个桌子,第一个桌子是 表名:OnlineTest 第二张表是 表名称:UserStatus 结果 我已经试过这个查询, 但是此查询将带出结果的前两行,而不是最后两行,其中userId和status为null。 如何带来以上结果? 问题答案: 将谓词放在子句中: 这将返回的所有行,其中谓词失败的列填充为。
问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用hibernate标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 问题答案: 您可以尝试以下 这里parent是中的属性名称,child
问题内容: 我必须根据可以为空的值选择相应的列以进行联接。详细地: 如果shoporders.InvoiceAddressId为null,那么我必须使用shoporders.DeliveryAddressId 有什么线索吗? 提前致谢 问题答案:
我想忽略createAlias中的默认连接限制。我有一段一刀切的关系。 我的问题是Hibernate为连接关系生成默认限制。 波约 注:费用表中没有诊断模板栏。 Charge.java 诊断emplate.java 查询 标准 Hibernate查询 如何避免这种情况?或者我的关系有什么问题? 请帮帮我。。!
致: 我怎么能这么做?
我试图左加入2表,而使用mysql"不在"条件。我的问题是,如果左连接是null,这意味着没有条目左连接,mysql不是在操作符不能正常工作。 这里有一个例子。 因为类型表中当前没有匹配的行。NOT IN操作员不工作。有什么解决办法吗?