sql - SQL,如何选择某个值后的所有后续记录;按用户 ID
问题描述
我有一张桌子,看起来像这样:
user_id | event_id | action
--------+----------+--------
user_1 | 1 | view
user_1 | 2 | enter
user_1 | 3 | sign_up
user_1 | 4 | view
user_2 | 1 | view
user_2 | 2 | sign_up
user_2 | 3 | enter
user_2 | 4 | view
因此,event_id
它与用户相关联,遵循事件发生时的顺序。
我在这里试图实现的目标:我想看看用户在完成“sign_up”事件后他们还会做什么。
我需要选择不同的action
= 'sign_up'之后的所有行user_id
。
我正在测试的查询有问题:
SELECT *
FROM TABLE
WHERE event_id >= (
SELECT event_id
FROM table
WHERE action = 'sign_up'
ORDER BY event_id ASC
LIMIT 1
)
这将简单地取出event_id
= 1 并应用于所有用户。
有什么建议么?
谢谢
解决方案
您需要一个共同相关的子查询,以便为每个 user_id 分别评估子查询:
SELECT t1.*
FROM the_table t1
WHERE event_id >= (SELECT event_id
from the_table t2
where t2.action = 'sign_up'
and t2.user_id = t1.user_id
ORDER BY EVENT_ID ASC
limit 1 )
推荐阅读
- python - 导入错误:找不到“__main__”
- javascript - 如何测试 onKeyPress 函数调用 - React 测试库
- rust - Rust 文档测试未运行
- mysql - 为什么数据库的第 8 章第 65 题中的同一本书的表格总是有 4 个结果?
- python - 根据其他 col 值填充和移动 col 的值
- python - 我的函数没有正确评估某些值
- google-apps-script - 显示错误的帐户
- bash - 使用 kubectl exec 获取语法错误,因为无法使用 TTY
- python - 如何计算列的唯一值并将每个值附加到字典中?
- python - 获取熊猫数据框中列的先前非 NaN 值以进行计算