【问题标题】:how to get records from a result of a subquery which matches a value of a column in SQL?如何从与 SQL 中的列值匹配的子查询的结果中获取记录?
【发布时间】:2021-05-16 00:58:51
【问题描述】:

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

考虑下表。

S_ID STATUS
1 Pending
1 Rejected
3 Approved
4 Approved
5 Pending
6 Rejected
7 Rejected
8 Approved
9 Rejected

SQL 子查询的预期结果,如果它的 S_ID 与另一个“待定”状态记录冲突,我希望从结果中删除具有“Rejected'”状态的记录。这是在我之前的问题中排序的: link here

S_ID STATUS
1 Pending
3 Approved
4 Approved
5 Pending
6 Rejected
7 Rejected
8 Approved
9 Rejected

现在,外部查询应该给出以下结果,记录只有 'Rejected' 状态。

S_ID STATUS
6 Rejected
7 Rejected
9 Rejected

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

【问题讨论】:

  • 请解释结果的逻辑。
  • @GordonLinoff,我已经编辑了我的问题,解释了结果的用例。

标签: android sql


【解决方案1】:

如果我正确理解您的问题,您需要最后一个 'Pending' 状态之后的行:

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

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

【讨论】:

  • 不,我不想在最后一个“待处理”状态之后出现行,我想要的是所有那些“拒绝”记录,除了那些与“待处理”冲突的记录。为了更清楚,我已经编辑了我的问题。
猜你喜欢
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多