我有一个问题:
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)
但我的查询存放在那里,没有回复。
您是否知道如何进行内连接并将结果限制为仅一个。
非常感谢你。
答案 0 :(得分:4)
如果性能不是问题,请在查询中使用COUNT(DISTINCT author_id)
。