我有以下数据
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'
我该怎么做才能过滤并拥有 sleep 和清醒的人的独特元组?例如:艾米和海伦。
如何获取仅睡着/醒着的人的元组?
最佳答案
聚合是查找醒着和睡着的人的一种方法:
SELECT sid, name
FROM yourTable
WHERE status IN ('Sleep', 'Awake')
GROUP BY sid, name
HAVING MIN(status) <> MAX(status);
Demo
我们可以尝试类似的方法来查找只有一种状态的人:
SELECT sid, name
FROM yourTable
GROUP BY sid, name
HAVING MIN(status) = MAX(status);
Demo
关于mysql - 过滤具有相同 PK 但不同值键的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587519/