1

我有一个查询:

SELECT count(authors.id), country.name from authors
INNER JOIN articles ON authors.article_id =  articles.id
INNER JOIN author_affi_rel ON authors.id =  author_affi_rel.id_author
INNER JOIN affiliations ON author_affi_rel.id_affiliation = affiliations.id
INNER JOIN country ON affiliations.country = country.unique_id
WHERE articles.journal_id = 20 AND authors.correspondence =1
GROUP BY country.name
ORDER BY count(authors.id) DESC

我在这里选择每个国家的作者人数。

一切正常,除了在 author_affi_rel 表中,每个作者我可以有多个从属关系,所以在我的结果中,作者将加倍。

我的目标是限制为一个

INNER JOIN author_affi_rel ON authors.id =  author_affi_rel.id_author

我试着做:

INNER JOIN author_affi_rel ON authors.id =  (SELECT id_author FROM  author_affi_rel WHERE id_author =  authors.id LIMIT 1)

但是我的查询在那里存货,没有回应。

您是否知道如何进行内部连接并将结果限制为一个。

非常感谢您。

4

1 回答 1

4

COUNT(DISTINCT author_id)如果性能不是问题,请在查询中使用。

于 2013-03-07T16:50:58.520 回答