mysql - 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),基于上面的查询
解决方案
您可以使用子查询来查找此类行:
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)
)
推荐阅读
- operating-system - 操作系统:我如何用叉子增加孩子
- powershell - Windows Defender 混淆批处理脚本命令
- node.js - gitlab ci - 一起引用和更改不起作用
- typescript - 角度材料自动完成有此错误“错误错误:ExpressionChangedAfterItHasBeenCheckedError:表达式在检查后已更改。”
- reactjs - 如何激活 babel 中的 legacyDecorators 选项?
- java - 非参数化和参数化语句的不同标记名称或如何使用 RuleLexer 跳转到上一个标记
- javascript - 在 chrome 中加载我的简单 D3 项目会给我这个错误。“加载资源失败:net::ERR_NAME_NOT_RESOLVED”。我能做些什么来修复它?
- php - 对来宾客户隐藏 Magento 2 自定义产品选项卡
- python - 如何使用python数据集为excel提供文件名?
- angular - 我们可以使用 JSZip 和 Angular7Csv 来压缩多个 csv 文件吗?