【发布时间】:2018-03-07 09:59:31
【问题描述】:
尝试像这样创建一个示例数据库:
CREATE TABLE "APP"
( "CODICE" VARCHAR2(20 BYTE)
);
Insert into APP (CODICE) values ('A');
Insert into APP (CODICE) values ('B');
Insert into APP (CODICE) values ('C');
Insert into APP (CODICE) values ('D');
Insert into APP (CODICE) values ('E');
CREATE TABLE "APP2"
( "CODICE" CHAR(1 BYTE),
"STATO" VARCHAR2(20 BYTE)
);
Insert into APP2 (CODICE,STATO) values ('A','E');
Insert into APP2 (CODICE,STATO) values ('B','E');
Insert into APP2 (CODICE,STATO) values ('C','E');
现在,试试这样的左连接:
select app.codice codice1,
case
when app.codice in ('A','B','C') then 'OK'
when app.codice in ('D','E') then 'KO'
end azione,
tt.codice codice2,
tt.stato
from app left join (select app2."CODICE", 'E' stato
from app2) tt on app.codice=tt.codice
结果很奇怪,“stato”列属于右表,所以,在左连接中,如果右键为空,则应该为空,所以如果codice2为空。 对于 codice=D 或 E,右表不匹配,但 stato 列不为空。 如果将静态列 'E' stato 替换为表 app2 中的实际列 stato,则不会发生这种情况
【问题讨论】:
-
向我们展示当前结果以及您想要的结果。 (请格式化文本。)
-
在下面完成.....
标签: sql oracle oracle11g left-join outer-join