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

MySQL数据查询需求:提取同一ID下同String不同Var的记录

没问题,我来帮你搞定这个SQL查询的问题!

提取同一ID对应相同String但不同Var的记录

问题背景

你需要从数据表中筛选出同一id对应的string值完全相同,但var值存在差异的所有记录,目标结果是id=1的两条记录(它们的id和string一致,var分别为ab、ac),而id=2的两条记录因为string不同,所以需要排除。

正确的MySQL查询语句

SELECT t.id, t.string, t.var
FROM your_table t
INNER JOIN (
    -- 先筛选出存在多个不同var的(id, string)组合
    SELECT id, string
    FROM your_table
    GROUP BY id, string
    HAVING COUNT(DISTINCT var) > 1
) AS valid_groups 
    ON t.id = valid_groups.id 
    AND t.string = valid_groups.string;

原语句的问题分析

你之前写的SELECT id, string, var FROM table WHERE string>1 GROUP BY id;有几个明显的逻辑错误:

  • WHERE string>1是把字符串类型的string当作数值比较,这完全不符合你的需求,这个条件没有任何实际意义
  • GROUP BY id会让MySQL(如果关闭ONLY_FULL_GROUP_BY)只返回每个id的一条随机记录,开启该模式的话会直接报错,根本无法保留多条符合条件的var记录

思路拆解

  1. 子查询阶段:我们先按id和string的组合分组,用COUNT(DISTINCT var) > 1来识别那些同一(id, string)下有多个不同var值的有效分组
  2. 主查询阶段:通过内连接把原表中属于这些有效分组的所有记录都拉出来,这样就精准得到了你需要的所有符合条件的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:21:08