首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用联接只显示匹配的项

如何使用联接只显示匹配的项
EN

Stack Overflow用户
提问于 2017-08-12 15:24:18
回答 1查看 39关注 0票数 1

有人能帮助我使用这样的条件使SQL (ORACLE)查询更加灵活吗?

有2张表格:

表1

代码语言:javascript
复制
CodeA      Year   

1112-999   2017
1113-999   2017

表2

代码语言:javascript
复制
CodeB      Year   

1114-111   2017
1115-111   2018

然后运行这个脚本

代码语言:javascript
复制
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');

在这种情况下,结果是:

代码语言:javascript
复制
CodeA      CodeB   

1112-999   1114-111

但是在这种情况下,它只需要显示第一个值,而另一个列在运行脚本后应该是空的。

例如,

代码语言:javascript
复制
CodeA      CodeB   

1112-999   NULL

但是,如果列"CodeB“(表2)包含值= 1112-534,那么在运行相同的脚本后,应该会出现该值。

例如,

表1

代码语言:javascript
复制
CodeA      Year   

1112-999   2017
1113-999   2017

表2

代码语言:javascript
复制
CodeB      Year   

1114-111   2017
1112-534   2017
1115-111   2018

运行相同的脚本后,结果应该是:

代码语言:javascript
复制
CodeA      CodeB   

1112-999   1112-534

根据表中的输入数据,我应该修改这个脚本以使它变得灵活(通用)?我的意思是,当表2不包含期望值(在本例中为1112-534)时,结果(对于第2列)应该为NULL:

代码语言:javascript
复制
CodeA      CodeB   

1112-999   NULL

当表2包含这个值(1112-534)时,响应应该是:

代码语言:javascript
复制
CodeA      CodeB   

1112-999   1112-534

下面是我的脚本,希望使它更加灵活:

代码语言:javascript
复制
SELECT aa.CodeA, bb.CodeB FROM Table 1 aa
JOIN Table 2 bb ON aa.Year = bb.Year
AND REGEXP_LIKE (aa.CodeA, '^111+2');

(请帮我))预先谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-12 15:39:32

您可能会发现在筛选之前查看联接结果是有帮助的:

代码语言:javascript
复制
SELECT aa.CodeA, bb.CodeB FROM Table1 aa
JOIN Table2 bb ON aa.Year = bb.Year;

您的英语语言规范不太清楚,但它建议您要进行空筛选:

代码语言:javascript
复制
SELECT aa.CodeA, bb.CodeB FROM Table1 aa
JOIN Table2 bb ON aa.Year = bb.Year
WHERE REGEXP_LIKE(aa.CodeA, '^1+2')
and bb.CodeB is not null;

另见(SQL)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45651874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档