如何从与SQL中列的值匹配的子查询结果中获取记录?

how to get records from a result of a subquery which matches a value of a column in SQL?

提问人:RKB 提问时间:2/12/2021 最后编辑:RKB 更新时间:2/15/2021 访问量:105

问:

在我的 Android 应用程序中,我正在使用 Room 持久性库。在其中一个表(房间实体)中。

请考虑下表。

S_ID 地位
1 待定
1 拒绝
3 批准
4 批准
5 待定
6 拒绝
7 拒绝
8 批准
9 拒绝

SQL 子查询的预期结果,如果其S_ID与另一个“待处理”状态记录发生冲突,我希望从结果中删除具有 ' 状态的记录。这在我之前的问题中得到了解决:链接在这里Rejected'

S_ID 地位
1 待定
3 批准
4 批准
5 待定
6 拒绝
7 拒绝
8 批准
9 拒绝

现在,外部查询应给出以下结果,其中的记录仅具有 ' 状态。Rejected'

S_ID 地位
6 拒绝
7 拒绝
9 拒绝

此结果是满足我需要根据用户选择的“状态”显示记录的用例所必需的。例如,如果用户选择“已批准”,则应用将显示所有“已批准”记录。但是,在“已拒绝”的情况下,我需要显示所有被拒绝的记录,但s_id与“待定”冲突的记录除外。我还想另外计算此类记录。

Android SQL

评论

0赞 Gordon Linoff 2/12/2021
请解释结果的逻辑。
0赞 RKB 2/12/2021
@GordonLinoff,我已经编辑了我的问题,解释了结果的用例。

答:

0赞 Gordon Linoff 2/12/2021 #1

如果我正确理解了您的问题,您希望最后状态之后的行:'Pending'

select t.*
from t
where t.s_id > (select max(t2.s_id) from t t2 where t2.status = 'Pending');

我什至不认为如果这是您想要的逻辑,您不需要消除“冲突”。

评论

0赞 RKB 2/12/2021
不,我不想要最后一个“待处理”状态之后的行,我想要的是所有那些“已拒绝”的记录,除了与“待定”冲突的记录。为了更清楚起见,我编辑了我的问题。