You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询对同一列设置两个AND条件筛选符合要求的访问URL

错误原因分析

你原查询的逻辑存在问题:要求同一条访问记录对应的用户同时属于child和18-25两个人群,单个用户不可能同时符合两个人群标签,因此必然返回空结果。
你实际需要的逻辑是:同一个URL,存在至少一条对应儿童用户的访问记录,同时存在至少一条对应18-25岁用户的访问记录。


修正方案

方案1:分组聚合统计(推荐,性能更优)

先关联访问表和用户表,按URL分组,校验分组内是否同时包含两个人群标签即可:

SELECT V.url
FROM Visit V
JOIN `User` U ON V.uid = U.uid
WHERE U.demo IN ('child', '18-25')
GROUP BY V.url
-- 保证两个不同的人群标签都出现过
HAVING COUNT(DISTINCT U.demo) = 2;

方案2:双表关联(和你原写法思路更接近)

分别关联儿童的访问记录、18-25岁人群的访问记录,匹配相同的URL即可:

SELECT DISTINCT V_child.url
FROM Visit V_child
-- 关联儿童用户的访问
JOIN `User` U_child ON V_child.uid = U_child.uid AND U_child.demo = 'child'
-- 关联相同URL下18-25岁用户的访问
JOIN Visit V_adult ON V_child.url = V_adult.url
JOIN `User` U_adult ON V_adult.uid = U_adult.uid AND U_adult.demo = '18-25';

两种方案都能返回你预期的结果A01。


内容的提问来源于stack exchange,提问作者Killua87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:24:08