sql - 使用连接获取记录
问题描述
下面是示例数据和返回结果的查询。
create table tab1 (grp_id number, mid number);
create table tab2 (grp_id number, mid number);
insert into tab1 values(1, 5);
insert into tab1 values(1, 6);
insert into tab1 values(1, 7);
insert into tab1 values(1, 8);
insert into tab1 values(2, 9);
insert into tab1 values(2, 10);
insert into tab2 values(1, 5);
insert into tab2 values(1, 6);
-----------------------------------------
select *
from tab1 t1, tab2 t2
where t1.mid = t2.mid(+)
and t1.grp_id in (select grp_id from tab2)
;
| GRP_ID | 中 | GRP_ID | 中 | |--------|-----|--------|--------| | 1 | 5 | 1 | 5 | | 1 | 6 | 1 | 6 | | 1 | 7 | (空) | (空) | | 1 | 8 | (空) | (空) |
我可以在不使用 In 或 Exists 子句的情况下获得上述结果吗.. 只需使用 join left right 或 case。请务必考虑这是示例数据
请帮忙谢谢。
解决方案
是的,您可以left join
直接使用
select t1.grp_id as grp_id_1,t1.mid as mid_1,
t2.grp_id as grp_id_2,t2.mid as mid_2
from tab1 t1
left join tab2 t2 on t1.grp_id=t2.grp_id and t1.mid=t2.mid
where t1.grp_id=1;
推荐阅读
- docker - nginx 服务页面代码而不是页面内容
- c++ - curl_easy_init 失败时如何获取错误原因
- powershell - 使用路径中的空格运行任何可能的 Powershell 脚本
- java - CanGoback() 和 goback() 在 WebView 中给出错误
- gradle - 验证工件是否成功发布到 nexus
- corda - 导入示例 Corda 项目时出现 Gradle 错误
- constraints - 在线性规划中表达 OR 约束
- r - 如何将多列合并为一列并在 R 中附加它们的唯一代码?
- jmeter - 文件上传到 API 不适用于 JMeter 中的并发用户
- python - TensorFlow tf.trainable_variables(scope="") 函数