android - 通过基于 sql 中的其他一些 coumn 有条件地删除具有相同列值的其他记录,基于列选择唯一记录
问题描述
我正在开发一个使用 Room 持久性库的 Android 应用程序。在其中一个表(房间实体)中,我有一种情况,我想通过有条件地删除基于其他列具有相同列值的其他记录来基于列选择唯一记录。
考虑下表作为基础。
S_ID | 地位 |
---|---|
1 | 待办的 |
1 | 被拒绝 |
3 | 得到正式认可的 |
4 | 得到正式认可的 |
5 | 待办的 |
6 | 被拒绝 |
7 | 被拒绝 |
SQL 查询的预期结果,Rejected'
如果它的 S_ID 与另一个“待定”状态记录冲突,我希望从结果中删除具有“状态”的记录
S_ID | 地位 |
---|---|
1 | 待办的 |
3 | 得到正式认可的 |
4 | 得到正式认可的 |
5 | 待办的 |
6 | 被拒绝 |
7 | 被拒绝 |
到目前为止我所尝试的:
select DISTINCT s_id OR s_id = 0, * from TABLE1
解决方案
我认为您可以尝试以下查询:
SELECT * FROM table1 WHERE table1.S_ID in (SELECT S_ID FROM table1 GROUP BY S_ID HAVING COUNT(S_ID)>0) and table1.[status]<>'Rejected'
编辑:
SELECT table1.S_ID,
(select Alias.[Status] from Table1 Alias where Alias.S_ID=table1.S_ID
and ((COUNT(table1.S_ID)>1 and Alias.[Status]<>'Rejected') or COUNT(table1.S_ID)=1)
) as [Status]
FROM table1 GROUP BY S_ID HAVING COUNT(S_ID)>0
推荐阅读
- html - CSS 元素出现在当前行下方。怎么修?
- xcode - 如何消除有关 MobileCoreServices 和 AssetsLibrary 的 Xcode 11.4 警告?
- php - 双击单个链接
- python - 如何将 python 模块 timeago 与烧瓶一起使用?
- javascript - 我如何根据两个选择选项打开弹出窗口
- jquery - 使用jsp更新MySQL表中的记录失败
- php - 使用laravel将普通密码IN数据库转换为加密密码?
- javascript - 用于登录的弹出窗口
- vue.js - 如何在 vue 的图像容器中动态附加一个 div?
- java - 如何将两个xml文件之间的差异输出到另一个xml文件中