postgresql - 左连接两个表 - 不包括第二个表有超过 1 行的第一个表值的连接;拒绝
问题描述
正如标题所说,我想拒绝行,所以我不会创建重复项。第一步是不要加入第二个表中有更多行的值。
如果需要,这里是一个示例: 表 a:
aa |bb |
---|----|
1 |111 |
2 |222 |
表 h:
hh |kk |
---|----|
1 |111 |
2 |111 |
3 |222 |
使用普通左连接:
SELECT
*
FROM a
LEFT JOIN h
ON a.bb = h.kk
;
我得到:
aa |bb |hh |kk |
---|----|---|----|
1 |111 |1 |111 |
1 |111 |2 |111 |
2 |222 |3 |222 |
我想去掉前两行,其中 aa = 1。
...
第二步是另一个查询,可能在某些情况下,表 a 在哪里,我将只过滤掉表 b 中超过 2 行的那些行。因此,我想创建表 c,我将在其中拥有:
aa |bb |
---|----|
1 |111 |
有人能帮助我吗?谢谢你。
解决方案
仅获取1:1
联接
SELECT a.aa,h.hh,h.kk FROM a
LEFT JOIN h ON a.bb = h.kk
GROUP BY bb HAVING COUNT(kk)=1
仅获取1:n
联接
SELECT a.aa,h.hh,h.kk FROM a
LEFT JOIN h ON a.bb = h.kk
GROUP BY bb HAVING COUNT(kk)>1
推荐阅读
- python - 我的 TensorFlow 代码在输入的维度上产生错误
- json - 如何将JSON文件转换为更深一步
- python - 如何使用 Selenium 和 Python 抓取 Glassdoor 评级
- .net - 有没有办法为所有控制器创建类似全局 ActionResult Index() 的东西?
- html - HTML/CSS 在页面底部添加水平滚动条
- python - 如何基于所述DataFrame中的另一个系列将布尔系列添加到python DataFrame?
- jquery - Fullcalendar - 逆背景
- php - Yii2 - 限制未确认账户的访问
- javascript - 第二个字符后的连字符
- angular - 订阅 Observable