在Oracle中,LEFT JOIN(左连接)查询从表的字段判断放在WHERE子句后面,会导致不满足条件的数据整条都不显示的原因是,WHERE子句是对查询结果进行过滤的条件,如果一个记录的从表字段不满足WHERE条件,那么这条记录就会被过滤掉,无论主表字段是否满足条件。

例如,假设有两个表A和B,A表是主表,B表是从表,我们使用左连接查询A表和B表,同时在WHERE子句中添加一个条件判断B表的字段。如果该条件不满足,那么查询结果中的这个B表记录就会被过滤掉,导致整条记录都不显示。

示例SQL语句如下:

SELECT A., B. FROM A LEFT JOIN B ON A.id = B.a_id WHERE B.column = 'xxx';

如果B表中的某条记录的column字段不等于'xxx',那么这条记录将被过滤掉,导致该条A表记录也不会显示。

如果你希望只过滤B表的记录,而不影响A表的显示,可以将B表的条件判断放在LEFT JOIN子句中的ON条件中,而不放在WHERE子句中,例如:

SELECT A., B. FROM A LEFT JOIN B ON A.id = B.a_id AND B.column = 'xxx';

这样,即使B表的条件不满足,A表的记录仍然会显示出来。

Oracle中SQL语句里左连接查询从表的字段判断放在where后面但是不满足的数据整条都不显示这是为什么

原文地址: https://www.cveoy.top/t/topic/i841 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录