请各位帮我看看 这个sql 为什么isendact为null还连接到这么多数据
但是实际连接到的数据isendact并不为null为什么 会这样?
现在发现问题是这个oracle有问题 但不知道什么问题 因为我把数据导入另一个oracle发现查询出的结果是我预想的结果
请各位帮我看看 这个sql 为什么isendact为null还连接到这么多数据
但是实际连接到的数据isendact并不为null为什么 会这样?
现在发现问题是这个oracle有问题 但不知道什么问题 因为我把数据导入另一个oracle发现查询出的结果是我预想的结果
1、不知道你对表连接了解多少,首先,left join 表示左边表全部数据,右边表有满足 on 中条件的数据就输出,没有对应的字段就输出NULL
2、其次,第一个语句中你在 WHERE 中指定了右表的某个字段 is null,这个条件有两层含义:一、是当右表在 ON 条件不满足的所有数据都满足这个条件(类似在WHERE条件中使用 NOT EXISTS()子句);另一个是当ON条件满足,能够提取出右表的数据中,指定的isendact这个字段本身的值是NULL的情况。显然,你第一个语句的所有输出都是满足第一类的情况的数据
3、最后,你在第二个语句中指定 isendact is not null,根据上面的解释,这里仅仅会输出 ON 条件满足且 isendact 不为 null 的数据,你这种写法等效于使用 INNER JOIN,在ON条件中为:RES.ID = TE.TASKID AND TE.ISENDACT IS NOT NULL