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

如何编写SQL查询筛选仅关注Data领域的学者(acnum)

如何筛选仅关注Data领域的学者编号?

你原来的SQL语句能成功找出所有关注Data领域的学者,但没法排除那些同时还拥有其他非Data类兴趣的学者。这里有两种实用的修改方案,帮你精准筛选出仅关注Data领域的学者编号:

方案一:使用NOT EXISTS子查询

这种方法的思路是:先找到所有关注Data的学者,再排除掉那些存在其他非Data兴趣的学者。

SELECT acnum
FROM interest
WHERE UPPER(descrip) LIKE '%DATA%'
AND NOT EXISTS (
    SELECT 1
    FROM interest i2
    WHERE i2.acnum = interest.acnum
    AND UPPER(i2.descrip) NOT LIKE '%DATA%'
);

逻辑说明:

  • 外层查询先筛选出所有包含Data兴趣的学者编号;
  • 内层子查询检查同一个学者是否存在非Data的兴趣,如果存在,就把这个学者从结果中排除;
  • 最终剩下的就是只关注Data领域的学者。

方案二:使用分组+HAVING子句

这种方法通过分组统计,直接判断某个学者的所有兴趣是否都属于Data领域:

SELECT acnum
FROM interest
GROUP BY acnum
HAVING COUNT(CASE WHEN UPPER(descrip) NOT LIKE '%DATA%' THEN 1 END) = 0
AND COUNT(CASE WHEN UPPER(descrip) LIKE '%DATA%' THEN 1 END) > 0;

逻辑说明:

  • 按学者编号acnum分组;
  • 第一个COUNT统计该学者非Data兴趣的数量,要求这个数量为0(即没有其他兴趣);
  • 第二个COUNT确保该学者至少有一条Data相关的兴趣记录(避免误选没有任何兴趣的学者)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:52:58