mysql - 选择仅具有一种值的行,而从一对中缺少其他值
问题描述
我必须选择在一行中具有一种值但在另一行中没有的行,两行都有一个key
共同的实体
样品型号:
+------+---------+---------------+
| key | status | arrival_p |
+------+---------+---------------+
| k1 | failure | came |
| k1 | success | gone |
| k2 | failure | came |
| k3 | success | came |
| k3 | failure | gone |
| k4 | success | came |
| k5 | success | came |
| k2 | success | gone |
| k6 | success | gone |
+------+---------+---------------+
所以在这种情况下,除了k4
and k5
,所有的都来了又走了。我怎样才能找到来了但没走的人??
k6
刚刚消失,所以它是一个异常值,很容易抓住它,但不是当务之急。
我尝试了下面的查询,但它不起作用(我知道实际表中的确切值与我的描述相匹配,但下面的查询根本不返回任何值):
select ap1.`key`
from `arrival_pattern` ap1
left join `arrival_pattern` ap2
on ap1.`key` = ap2.`key`
where ap2.`key` is NULL
and ap1.`arrival_p` = 'came'
and ap2.`arrival_p` = 'gone'
limit 10;
任何有关我加入中可能出现问题的正确方向的帮助或指示都是有帮助的。我在mysql上。
蒂亚:)
解决方案
由于came
和gone
只能针对特定键出现一次,因此您不妨选择存在单个记录的元素:
SELECT `key`,
COUNT(*)
FROM arrival_pattern
GROUP BY `key`
HAVING COUNT(*) = 1;
这也解决了第二个问题('k6 has just gone')。
另外,请注意,这key
是MySQL 中的保留关键字。您应该认真考虑将您的列命名为其他名称。
推荐阅读
- vb.net - 在多行文本框中具有选择或焦点的多个文本框?
- python - 找不到库 pyttsx3
- python - django.core.exceptions.ImproperlyConfigured:使用参数名称“order.id”,它不是有效的 Python 标识符
- java - ListView 未使用 AsyncTask 中的适配器更新
- arrays - ForEach (0..< 不从 0 开始
- django - 从一对多关系中获取特定的相关模型
- ios - Metal alphaBlendOperation .max 奇怪的行为
- docker - Traefik 将一个应用程序路由到端口 80,其他需要显式端口
- php - 如何在 php 中返回一个新的实例
- javascript - 我可以向 Google Apps 脚本类添加自定义方法吗?