请找到以下问题并确认。
步骤01: 根据连接条件,从表和填充中获取值。 由于表B中没有匹配值,因此所有列都填充有NULL值。
列:B.OP_TYPE,B.DEMO_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
相同的select查询,其中condition得到的结果与预期的相同。
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.OP_TYPE!='D'-这是包含B.OP_TYPE的条件为空的
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';
答案 0 :(得分:0)
到目前为止,您所描述的内容与SQL的行为并不矛盾。重要的是NULL表示没有值。因此Spark package found in SPARK_HOME: /opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/spark
Launching java with spark-submit command /opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24/lib/spark/bin/spark-submit --driver-memory "2g" sparkr-shell /tmp/Rtmp1ieLNy/backend_port6f428753991
Error: sparkr.zip does not exist for R application in YARN mode.
Run with --help for usage help or --verbose for debug output
Error in sparkR.sparkContext(master, appName, sparkHome, sparkConfigMap, :
JVM is not ready after 10 seconds
在FOO != 'B'
是FOO
的地方不不匹配。
您尚未提供NULL
和TBL_PLN_PRO_DIV_SDIV
的示例数据,因此很难在这里提供明确的帮助。
如果您的查询没有返回TBL_MS_TARGET_GROUP11
处的行,那么我会认为有些不对,因为您已经证明A_OP_TYPE != 'D'
(即A_OP_TYPE='U'
处有行)。但是,如果您没有来自!= 'D'
的匹配记录,其中TBL_MS_TARGET_GROUP11
的值不是OP_TYPE
,那么您将找不到匹配项。
答案 1 :(得分:0)
员工表:
从emp1中选择empno,ename,job,deptno;
7839总统10 7698刹车管理器30 7902福特ANALYST 20 7369史密斯秘书20
从dept1中选择*;
10个纽约会计 30销售芝加哥
无任何条件的左联接:
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 MANAGER 30 30销售