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

SQL分组查询结果不符预期,如何修正以获取目标数据?

修正SQL以获取存在code=1记录的name的全部数据

你的原始SQL有两个明显问题:一是没写FROM子句指定要查询的表,二是逻辑上直接过滤code=1只能拿到该code对应的记录,没法获取这些name的所有数据。

要实现需求,得先找出所有存在code=1记录的name,再提取这些name的全部数据,下面是几种可行的写法:

方法1:子查询+IN

SELECT name, code
FROM 你的表名
WHERE name IN (
    SELECT DISTINCT name
    FROM 你的表名
    WHERE code = 1
);

方法2:EXISTS子查询(推荐,性能更优)

SELECT t1.name, t1.code
FROM 你的表名 t1
WHERE EXISTS (
    SELECT 1
    FROM 你的表名 t2
    WHERE t2.name = t1.name
      AND t2.code = 1
);

方法3:自连接

SELECT DISTINCT t1.name, t1.code
FROM 你的表名 t1
JOIN 你的表名 t2 ON t1.name = t2.name
WHERE t2.code = 1;

注意事项

  • 把代码里的你的表名替换成你实际使用的表名称
  • 自连接的写法需要加DISTINCT,避免原表存在重复name+code组合时返回重复记录
  • 大多数场景下,EXISTS的执行效率会比IN更高,尤其是数据量较大的时候

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 22:40:56