【发布时间】:2020-03-15 20:57:59
【问题描述】:
我有两个具有共享密钥的表,我正在尝试将它们加入以根据少数条件过滤数据
tbl1
id | OutPutValue |
1 | 2019 |
2 | 2018 |
tbl2
object_id | status | type |
1 | 22 | a |
1 | 22 | c |
1 | 33 | b |
2 | 33 | c |
2 | 33 | c |
2 | 33 | c |
我想要得到的是:它必须从 tbl1 中选择所有 'OutPutValue',其中,在 tbl2 中,'type' 列应该是 c,而 'status' 列对于所有行必须具有相同的值,即 33。请注意tbl1的主键(id)是tbl2中的外键(object_id)。
从 tbl1 中选择列,如果,tbl2 中的所有行(tbl1 的 id 在 tbl2 中有多个行(基于 object_id))具有相同的 status 值,即 33 并且类型应该是 'c'。
OutPutValue | Type | status |
2018 | c | 33 |
我尝试了以下解决方案,但它没有返回所需的输出:
SELECT a.OutPutValue FROM tbl1 a JOIN tbl2 b ON a.id = b.object_id WHERE b.Type =c
GROUP BY a.OutPutValue, b.status HAVING b.STATUS IN(33)
【问题讨论】:
-
您能告诉我们您为解决此问题所做的尝试吗?
-
@Paul 用我尝试过的解决方案更新了问题
标签: sql sql-server