Mysql 复杂条件SQL查询
假设我有下表:Mysql 复杂条件SQL查询,mysql,Mysql,假设我有下表: | Visitor | url | time | 我正在尝试编写以下查询: for every visitor: check if visitor has visited /my_url if yes: check if visitor visited /my_url/cool url within next 5 min 然后我会有这样的想法: | visitor | url | | xyz | /my_url | |
| Visitor | url | time |
我正在尝试编写以下查询:
for every visitor:
check if visitor has visited /my_url
if yes:
check if visitor visited /my_url/cool url within next 5 min
然后我会有这样的想法:
| visitor | url |
| xyz | /my_url |
| | /my_url/cool |
| abc | /my_url |
| | /my_url/cool |
我甚至不知道从哪里开始。任何帮助都将不胜感激
到目前为止,我所得到的只是:
select url, time, visitor
from my_table
where url like '%my_url%'
group by visitor;
试着这样做:
select distinct v1.Visitor
from visits v1
join visits v2
on v2.Visitor = v1.Visitor
and v2.time > v1.time
and v2.time <= v1.time + interval 5 minute
where v1.url = '/my_url'
and v2.url = '/my_url/cool'
选择不同的v1.Visitor
来自访问v1
加入访问v2
在v2.Visitor=v1.Visitor上
和v2.time>v1.time
还有v2.time试试这样的方法:
select distinct v1.Visitor
from visits v1
join visits v2
on v2.Visitor = v1.Visitor
and v2.time > v1.time
and v2.time <= v1.time + interval 5 minute
where v1.url = '/my_url'
and v2.url = '/my_url/cool'
选择不同的v1.Visitor
来自访问v1
加入访问v2
在v2.Visitor=v1.Visitor上
和v2.time>v1.time
v2.time不是一个非常复杂的查询
每一位访客
这是否意味着您希望未访问URL的访问者包含在输出中?(我觉得你的描述和例子都不清楚)。假设是这样的话
假设您的表中的记录比唯一访问者多得多,因此,如果您可以连接到访问者表,则解决方案的效率会更高,但如果没有,您可以使用:
SELECT DISTINCT visitor
FROM yourtable
检查访客是否访问过[url1]
检查访客是否在接下来的5分钟内访问了[url2]
但是如果你只是想要一份满足这两个标准的访客名单
SELECT visitor
FROM yourtable u1
JOIN yourtable u2
ON u1.visitor=u2.visitor
AND u2.time between u1.time
AND u1.time + INTERVAL 5 MINUTES
WHERE u1.url=[url1]
AND u2.url=[url2]
这不是一个非常复杂的查询
每一位访客
这是否意味着您希望未访问URL的访问者包含在输出中?(我觉得你的描述和例子都不清楚)。假设是这样的话
假设您的表中的记录比唯一访问者多得多,因此,如果您可以连接到访问者表,则解决方案的效率会更高,但如果没有,您可以使用:
SELECT DISTINCT visitor
FROM yourtable
检查访客是否访问过[url1]
检查访客是否在接下来的5分钟内访问了[url2]
但是如果你只是想要一份满足这两个标准的访客名单
SELECT visitor
FROM yourtable u1
JOIN yourtable u2
ON u1.visitor=u2.visitor
AND u2.time between u1.time
AND u1.time + INTERVAL 5 MINUTES
WHERE u1.url=[url1]
AND u2.url=[url2]
为什么在表描述和查询中使用不同的列名?为什么在表描述和查询中使用不同的列名?这是一个很好的解释。非常感谢您,我想我可以基于此编写我的其他查询。:)这是很好的解释。非常感谢您,我想我可以基于此编写我的其他查询。:)