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

如何查询t_audit表中被user_id=1更新未被user_id=2更新的用户名

问题分析

原SQL无法运行的核心问题有两个:

  • NOT EXISTS 语法使用错误:该关键字必须跟随完整的子查询语句,不能直接写条件表达式
  • 缺少同客户关联逻辑:没有限定子查询筛选的是和外层查询同一个客户的更新记录,即便语法改对也无法实现「当前客户未被user_id=2更新」的判断

修正方案(NOT EXISTS 写法)

增加子查询并关联同客户姓名,同时添加DISTINCT避免同一客户被多次更新导致返回重复结果:

SELECT DISTINCT ta.name
FROM t_audit ta
WHERE ta.updated = 'Y' AND ta.user_id = 1
  AND NOT EXISTS (
    SELECT 1 
    FROM t_audit ta2
    WHERE ta2.name = ta.name 
      AND ta2.updated = 'Y' 
      AND ta2.user_id = 2
);

可选替代方案(GROUP BY 写法)

如果习惯用分组聚合逻辑,也可以用以下写法实现相同需求:

SELECT name
FROM t_audit
WHERE updated = 'Y' AND user_id IN (1, 2)
GROUP BY name
HAVING SUM(CASE WHEN user_id = 1 THEN 1 ELSE 0 END) >= 1
   AND SUM(CASE WHEN user_id = 2 THEN 1 ELSE 0 END) = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:03