查找 URL 访问过 SQL A 和 B 的用户?
Find users who have visited URL A and B with SQL?
假设您有一个 table 和 user, url, datetime
,其中每一行都是一次网站访问。
如何找到既访问过 URL 包含字符串模式 A 又访问过 URL 包含字符串模式 B 的用户?
事实上它“包含一个字符串模式......”,而不是简单的相等性使得无法使用类似
的查询
url in ('action1.php', 'action2.php')
喜欢 .
您可以使用 group by
和 having
:
select user
from t
where url like '%a%' or
url like '%b%'
group by user
having sum(url like '%a%') > 0 and
sum(url like '%b%') > 0;
如果不想重复比较,可以省略where
子句或使用:
select user
from (select t.*, (url like '%a%') as has_a, (url like '%n%') as has_b
from t
) t
where has_a or has_b
group by user
having sum(has_a) > 0 and
sum(has_b) > 0;
假设“/testing”和“/staging”是两个 URL 模式。你可以使用这个
SELECT user
FROM `table`
WHERE url LIKE '%/testing%' or
url LIKE '%/staging%'
GROUP BY user
HAVING (COUNT(url LIKE '%/testing%') > 0 and COUNT(url LIKE '%/staging%') > 0)
如果您需要有关模式匹配的更多信息,您可以搜索“模式匹配 SQL”和“SQL 正则表达式”。
假设您有一个 table 和 user, url, datetime
,其中每一行都是一次网站访问。
如何找到既访问过 URL 包含字符串模式 A 又访问过 URL 包含字符串模式 B 的用户?
事实上它“包含一个字符串模式......”,而不是简单的相等性使得无法使用类似
的查询url in ('action1.php', 'action2.php')
喜欢
您可以使用 group by
和 having
:
select user
from t
where url like '%a%' or
url like '%b%'
group by user
having sum(url like '%a%') > 0 and
sum(url like '%b%') > 0;
如果不想重复比较,可以省略where
子句或使用:
select user
from (select t.*, (url like '%a%') as has_a, (url like '%n%') as has_b
from t
) t
where has_a or has_b
group by user
having sum(has_a) > 0 and
sum(has_b) > 0;
假设“/testing”和“/staging”是两个 URL 模式。你可以使用这个
SELECT user
FROM `table`
WHERE url LIKE '%/testing%' or
url LIKE '%/staging%'
GROUP BY user
HAVING (COUNT(url LIKE '%/testing%') > 0 and COUNT(url LIKE '%/staging%') > 0)
如果您需要有关模式匹配的更多信息,您可以搜索“模式匹配 SQL”和“SQL 正则表达式”。