提问人:RKB 提问时间:2/12/2021 最后编辑:RKB 更新时间:2/15/2021 访问量:105
如何从与SQL中列的值匹配的子查询结果中获取记录?
how to get records from a result of a subquery which matches a value of a column in SQL?
问:
在我的 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与“待定”冲突的记录除外。我还想另外计算此类记录。
答:
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
不,我不想要最后一个“待处理”状态之后的行,我想要的是所有那些“已拒绝”的记录,除了与“待定”冲突的记录。为了更清楚起见,我编辑了我的问题。
评论