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

SQL查询求助:如何筛选mange表中同时食用两种披萨的用户

解决同时食用两种披萨的用户筛选问题

问题原因

你写的SQL逻辑有误:单条记录的pizza字段只能存储一种披萨类型,不可能同时等于'végétarienne'和'mexicaine',所以用AND直接筛选自然返回空结果。

正确解法

下面提供几种常用的实现方式:

方法1:分组统计 + HAVING子句

通过分组统计每个用户对应的披萨种类数,筛选出同时包含两种披萨的用户:

SELECT nom
FROM mange
WHERE pizza IN ('végétarienne', 'mexicaine')
GROUP BY nom
HAVING COUNT(DISTINCT pizza) = 2;
  • 先筛选出所有涉及目标两种披萨的记录
  • 按nom分组后,统计每组内不同披萨的数量,等于2即表示该用户同时吃了两种披萨

方法2:自连接

将表与自身连接,匹配同一用户下分别食用两种披萨的记录:

SELECT DISTINCT m1.nom
FROM mange m1
JOIN mange m2 ON m1.nom = m2.nom
WHERE m1.pizza = 'végétarienne'
AND m2.pizza = 'mexicaine';
  • 自连接后,m1存储用户吃素食披萨的记录,m2存储同一用户吃墨西哥披萨的记录
  • 使用DISTINCT避免重复输出同一用户

方法3:EXISTS子查询

先筛选出吃素食披萨的用户,再检查该用户是否存在吃墨西哥披萨的记录:

SELECT DISTINCT nom
FROM mange
WHERE pizza = 'végétarienne'
AND EXISTS (
    SELECT 1
    FROM mange
    WHERE nom = mange.nom
    AND pizza = 'mexicaine'
);
  • 外层查询先锁定吃素食披萨的用户
  • 子查询验证该用户是否有对应墨西哥披萨的消费记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:20:28