繁体   English   中英

使用相同的PK但值键不同的查询

[英]Filtering queries with same PK but different value keys

我有以下数据

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. 我该怎么做才能过滤出具有睡眠和清醒状态的人的唯一元组? 例如:艾米和海伦。

  2. 我如何才能得到仅睡着/清醒的人的元组?

聚集是找到既醒着又睡着的人的一种方法:

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

在此处输入图片说明

演示

我们可以尝试类似的方法来找到只有一种身份的人:

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

在此处输入图片说明

演示

使用GROUP BY

GROUP BY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集按一列或多列分组。

https://www.w3schools.com/sql/sql_groupby.asp

您可以在下面尝试-

    SELECT sid, name
    FROM yourTable
    WHERE status IN ('Sleep', 'Awake')
    GROUP BY sid, name
    having(distinct status)=2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM