sql - oracle sql连接不正确
问题描述
我想总结两张表。两个表都包含按类别分组的行数:
number category
5 A
4819 B
1 C
number category
12043 B
我尝试了以下方法:
select a.category, a.number + b.number as number
from a
right join b
on a.category = b.category
我得到:
number category
4 16862
我不明白为什么我没有得到所有三个类别。我尝试左连接而不是右连接。
解决方案
右连接的问题是a
表应该出现在连接的右侧。或者,使用左连接,我们可以这样写:
SELECT
a.category,
a.number + COALESCE(b.number, 0) AS number
FROM tablea a
LEFT JOIN tableb b
ON a.category = b.category;
但是这个答案假设该a
表将包含您希望出现在结果集中的每个类别。对于更通用的解决方案,我们可能必须使用完全外连接:
SELECT
COALESCE(a.category, b.category) AS category,
COALESCE(a.number, 0) + COALESCE(b.number, 0) AS number
FROM tablea a
FULL OUTER JOIN tableb b
ON a.category = b.category;
推荐阅读
- rest - REST 安全性,使用基本身份验证和 jwt 令牌验证是一种不好的做法吗?
- sql - Oracle Sql,如何将日期值分组为月份摘要
- c++ - CUDA 错误标识符“__stcs”未定义
- validation - 让脚本从具有多个选项卡的工作表中的下拉菜单运行
- .net - .Net Core 中带有 MVC 前端的微服务
- java - JAVA 泛型 - 如何将类本身作为参数传递
- c++ - 排序值应按其名称显示
- python - MLflow:使用 python 代码查找具有最佳指标的模型版本
- angular - async pipe not working correctly with BehaviorSubject piped with DelayWhen
- rust - Why are secp256k1 uncompressed public keys not formatted as expected?