INNER JOIN,限制为1

时间:2013-03-07 16:48:56

标签: mysql sql inner-join

我有一个问题:

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)

但我的查询存放在那里,没有回复。

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

非常感谢你。

1 个答案:

答案 0 :(得分:4)

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