我有一张表,上面有如下的记录
表
subid clickid status datetime
1 123 low 2018-07-24 20:20:44
2 123 act 2018-07-24 21:20:44
3 231 act 2018-07-25 20:20:44
4 231 low 2018-07-25 21:20:44
5 789 low 2018-07-26 20:20:44
6 789 act 2018-07-26 21:20:44
我的table的例子在上面。
现在我需要找到那些状态为'low',然后状态为'act'的记录/用户。
我的意思是clickid123和789是我需要的输出。
第一个状态值应该是低的,然后是act。因为有些记录也存在,比如status=act first,然后status=low。例如clickid=231。但我想要地位=低然后地位=行动。例如clickid=123&789。
注意:clickid是一个用户标识
我可以使用什么查询?
4条答案
按热度按时间nmpmafwu1#
如果每次最多有两条记录
clickid
然后您可以使用:此处演示
为了确保一个记录是'low',而另一个是'act',您可以将以下 predicate 添加到
HAVING
:SUM(status = 'low') = 1
SUM(status = 'act') = 1
ckx4rj1h2#
你可以使用自连接
ct2axkht3#
尝试加入:
这里还有一个演示:http://sqlfiddle.com/#!9/1f861/1/0年
dgtucam14#