首页 > 解决方案 > MySQL依靠前提条件?

问题描述

考虑下面的方案

id   user   tag    created
1    foo    tag1   2018-09-01
2    foo    tag2   2018-09-01
3    bar    tag1   2018-09-02
4    bar    tag2   2018-09-03
5    kkk    tag2   2018-09-05
6    qqq    tag1   2018-09-12

如何找到唯一用户的数量,在“tag1”行之后,该用户的未来行中有一个“tag2”?

答案是2(foo,bar),基于上面的查询

标签: mysqlsqldatesubquery

解决方案


您可以使用子查询来查找此类行:

SELECT *
FROM yourdata AS t
WHERE tag = 'tag1'
AND EXISTS (
    SELECT 1
    FROM yourdata AS x
    WHERE x.user = t.user
    AND x.tag = 'tag2'
    AND (x.created > t.created OR x.id > t.id)
)

推荐阅读