ksql:带有not equal where条件的左连接不满足结果

smdncfj3  于 2021-06-06  发布在  Kafka
关注(0)|答案(2)|浏览(416)

请找出下面的问题,并确认相同的。
步骤01:根据连接条件,从表和填充中获取值。由于表b中没有匹配的值,所有列都将填充null值。
列:b.op\u type,b.demo\u id

ksql> SELECT PLAN_ID,A_OP_TYPE,B.OP_TYPE,A.PRIMARY_DEMO_ID,B.DEMO_ID \
FROM TBL_PLN_PRO_DIV_SDIV A \
LEFT JOIN  TBL_MS_TARGET_GROUP11 B \
ON (A.PRIMARY_DEMO_ID=B.DEMO_ID);
382591 | U | null | 3085 | null

使用where条件的相同select查询将给出与预期相同的结果。

ksql> SELECT PLAN_ID,A_OP_TYPE,B.OP_TYPE,A.PRIMARY_DEMO_ID,B.DEMO_ID \
FROM TBL_PLN_PRO_DIV_SDIV A \
LEFT JOIN  TBL_MS_TARGET_GROUP11 B \
ON (A.PRIMARY_DEMO_ID=B.DEMO_ID) WHERE B.OP_TYPE IS NULL;
382591 | U | null | 3085 | null

但是当我们尝试用不等于where条件进行选择时,相应的查询并没有给出正确的结果。b、 操作类型!='这是包含b.op_类型的条件为空的地方

ksql> SELECT PLAN_ID,A_OP_TYPE,B.OP_TYPE,A.PRIMARY_DEMO_ID,B.DEMO_ID \
FROM TBL_PLN_PRO_DIV_SDIV A \
LEFT JOIN  TBL_MS_TARGET_GROUP11 B \
ON (A.PRIMARY_DEMO_ID=B.DEMO_ID) WHERE B.OP_TYPE != 'D';
9w11ddsr

9w11ddsr1#

到目前为止,您描述的内容与sql的行为并不矛盾。重要的是null表示没有值。所以呢 FOO != 'B' 与何处不匹配 FOONULL .
您尚未提供的示例数据 TBL_PLN_PRO_DIV_SDIV 以及 TBL_MS_TARGET_GROUP11 所以在这里很难有明确的帮助。
如果查询没有返回行 A_OP_TYPE != 'D' 我同意有些事情不对,因为你已经证明了 A_OP_TYPE='U' (即。 != 'D' ). 但是,如果你没有来自 TBL_MS_TARGET_GROUP11 其中 OP_TYPE 值不是 D ,你找不到匹配的。

cdmah0mi

cdmah0mi2#

员工表:
从emp1中选择empno、ename、job、deptno;
7839国王总裁10 7698布莱克经理30 7902福特分析师20 7369史密斯职员20
从dept1中选择*;
10会计纽约30销售芝加哥
不带任何where条件的左连接:

select empno,ename,job,a.deptno,a.DEPTNO,DNAME from emp1 a left join dept1 b on (a.DEPTNO = b.DEPTNO)

7839    KING    PRESIDENT   10  10  ACCOUNTING
7698    BLAKE   MANAGER     30  30  SALES
7369    SMITH   CLERK       20  20  
7902    FORD    ANALYST     20  20  

where condition with Null value 

select empno,ename,job,a.deptno,a.DEPTNO,DNAME from emp1 a left join dept1 b on (a.DEPTNO = b.DEPTNO) where DNAME is null;

7369    SMITH   CLERK   20  20  
7902    FORD    ANALYST 20  20  

select empno,ename,job,a.deptno,a.DEPTNO,DNAME from emp1 a left join dept1 b on (a.DEPTNO = b.DEPTNO) where DNAME != 'ACCOUNTING';

7698 blake经理30 30销售

相关问题