mysql - sql查询有入口但没有出口的记录
问题描述
我有一张旅行桌
travellers(id,full_name)
和另一张 traveller_history 表
travellers_history(id,traveller_id,status)
travellers_history 中的状态是一个数字字段
我想要记录在 traveller_history 记录中具有状态 11 记录但在 traveller_history 中没有状态 12 记录的所有旅行者的记录。如何在 sql 中实现这一点?
解决方案
加入表格,按旅行者分组并在have子句中设置条件:
select t.id, t.full_name
from travellers t inner join travellers_history h
on h.traveller_id = t.id
group by t.id, t.full_name
having sum(h.status = 12) = 0 and sum(h.status = 11) > 0
或者:
select t.id, t.full_name
from travellers t inner join travellers_history h
on h.traveller_id = t.id
where h.status in (11, 12)
group by t.id, t.full_name
having max(h.status) = 11
推荐阅读
- python - Hashtag 计数器 Python
- python - python 3中beam.io FileBasedSource中的open_file问题
- performance - Azure 中托管的 ASP.Net Web API 高响应时间
- java - 在 Spring Boot /actuator 根端点上返回 404
- npoi - 使用 C# 在 NPOI 库中设置单元格以接受十进制
- ios - 在 IOS 上 Flutter 测试 find.pageBack() 不起作用
- azure - 调试和断点打印参数作为 ADF 中的警报
- c++ - C2065:“RP_MAX_DB_PROTOCOL_ID”:没有理由的未声明标识符
- excel - 记录时间和审计跟踪的更改表
- java - How does Gradle's CopySpec filter method signature relate to the example given?