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

如何使用MySQL编写单条SQL计算论文独有引用指标

问题背景

现有MySQL表PaperReferences存储论文引用关系,字段定义如下:

  • PaperID:引用方论文ID
  • ReferencedPaperID:被引用论文ID

需要为每篇论文计算指标:引用该论文且未引用该论文任何参考文献的施引论文总数。
以你给出的示例数据为例,论文1的指标值为2:它的施引论文共3篇(5、6、7),其中论文5同时引用了论文1的参考文献4,属于无效施引不计入统计,仅6、7符合要求。

实现思路

通过多层关联查询过滤有效施引论文,核心逻辑如下:

  1. 提取所有被引用的目标论文,以及对应的施引论文集合
  2. 关联查询拿到每篇目标论文的所有参考文献集合
  3. 排除施引论文中同时引用了上述参考文献的无效记录
  4. 按目标论文分组统计剩余有效施引的数量
最终SQL查询语句
SELECT 
    target_paper.ReferencedPaperID AS PaperID,
    COUNT(DISTINCT target_paper.PaperID) AS indicator_value
FROM 
    PaperReferences AS target_paper
LEFT JOIN 
    PaperReferences AS target_ref 
    ON target_paper.ReferencedPaperID = target_ref.PaperID
LEFT JOIN 
    PaperReferences AS invalid_citer 
    ON target_paper.PaperID = invalid_citer.PaperID 
    AND target_ref.ReferencedPaperID = invalid_citer.ReferencedPaperID
WHERE 
    invalid_citer.PaperID IS NULL
GROUP BY 
    target_paper.ReferencedPaperID;
示例验证&性能优化
  • 你提供的示例数据执行上述SQL后,PaperID=1对应的indicator_value返回2,和预期结果完全匹配
  • 数据量较大时,可分别为PaperID、ReferencedPaperID字段建立索引,查询效率会有大幅提升

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:15:01