mysql - 过滤具有相同 PK 但不同值键的查询

标签 mysql filter subquery

我有以下数据

123    Amy    Sleep
234    Bob    Sleep
987    Helen    Sleep
123    Amy    Awake
123    Amy    Awake
678    Fay    Awake
765    Jay    Awake
876    Irene    Awake
987    Helen    Awake

从运行

SELECT t1.sid, name, status
FROM t2
JOIN Apply ON t2.sid=t1.sid
WHERE status='Awake' OR status='Sleep'
  1. 我该怎么做才能过滤并拥有 sleep 和清醒的人的独特元组?例如:艾米和海伦。

  2. 如何获取仅睡着/醒着的人的元组?

最佳答案

聚合是查找醒着和睡着的人的一种方法:

SELECT sid, name
FROM yourTable
WHERE status IN ('Sleep', 'Awake')
GROUP BY sid, name
HAVING MIN(status) <> MAX(status);

enter image description here

Demo

我们可以尝试类似的方法来查找只有一种状态的人:

SELECT sid, name
FROM yourTable
GROUP BY sid, name
HAVING MIN(status) = MAX(status);

enter image description here

Demo

关于mysql - 过滤具有相同 PK 但不同值键的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587519/

相关文章:

sql - 为带有子查询的查询优化 SQL "Where"子句

ios - 以灰度绘制 UIView?

mysql - 这个sql查询在哪里包含语法错误?

php - 遵循教程时连接到数据库时遇到问题

mysql - 如果我们将表导出到另一个数据库中,那么它的所有触发器也会随之导出吗?

filter - 如何在 ffmpeg 中使用混合过滤器叠加两个视频

PHP 删除除字母和连字符 (-) 以外的所有内容

MySQL IN 仅返回一行,而 JOIN 查询返回所需结果?

mysql - 使用相关子查询比连接更好吗? (索引视角)

mysql - 为删除的数据设计表