【发布时间】:2021-07-20 02:31:50
【问题描述】:
抱歉标题含糊不清,但我想不出一个更清晰的标题来描述我的情况。
我有一个 MySQL 表来存储文章之间的引用关系。表结构如下:
表名:PaperReferences
| PaperID | ReferencedPaperID |
|---|---|
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 5 | 1 |
| 5 | 4 |
| 6 | 1 |
| 7 | 1 |
我想为每篇论文计算一个指标,定义为引用它而不是引用它的论文数量。例如,paper 1 的这个指标是 2,因为它有 3 次引用(5、6、7)但只有 2 次没有引用它的引用(6、7)。也就是说,paper 5 不计入,因为它也引用了paper 4,这是paper 1 的引用之一。
我目前正在使用 Python 和迭代来做这件事。但是,它太慢了,我想知道我是否可以使用单个 SQL 查询获得结果。
对我来说最棘手的部分是过滤掉同样引用 paper 1 的参考文献的无效施引论文。
【问题讨论】:
-
你能显示你的实际表名和列名吗?您是否尝试为单个论文 ID 或所有有引用的论文或所有论文(即使它们没有引用)获取此指标?
-
@ysth 我已将列名修改为实际名称,并且我正在尝试为所有论文获取此指标(当它们没有引用时为零)。
-
如果你想要没有引用的论文,也需要一个表格来存放论文吗?
-
DB Fiddle 非常适合您的问题。准备数据并描述期望的结果