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

SQL查询需求:筛选同一Job下拥有至少两种不同Colour的Name

问题描述

我有如下数据表:

IDNamejobColour
1AbbyJanitorpink
2Bobteacheryellow
3CamMusicianblue
4Bobteachergreen
5Abbyteacherpink

需要编写查询语句,获取满足以下条件的Name:同一Job下拥有至少两种不同的Colour。

本例中仅Bob会被返回。

解决方案

以下提供两种常见的SQL实现方式,将语句中的your_table_name替换为实际表名即可:

方法一:GROUP BY + HAVING 分组筛选

SELECT Name
FROM your_table_name
GROUP BY Name, job
HAVING COUNT(DISTINCT Colour) >= 2;

逻辑说明

  • 按Name和job联合分组,确保统计范围是「同一用户+同一职位」的组合
  • COUNT(DISTINCT Colour)统计该分组内不同颜色的数量,筛选出数量≥2的分组,得到符合条件的Name

方法二:EXISTS 关联查询

SELECT DISTINCT t1.Name
FROM your_table_name t1
WHERE EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t1.Name = t2.Name
      AND t1.job = t2.job
      AND t1.Colour != t2.Colour
);

逻辑说明

  • 通过EXISTS检查当前记录是否存在同Name、同job但不同Colour的关联记录
  • DISTINCT用于去重,避免同一Name被多次返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:27:20