我想在表(阶段)中列出表(研究)中相关记录的数量。
到目前为止,此语句运行良好,但仅返回有> 0个相关记录的行:
SELECT staging.*,
COUNT(studies.PMID) AS refcount
FROM studies
LEFT JOIN staging
ON studies.rs_number = staging.rs
GROUP BY staging.idstaging;
如何调整此语句以列出表(阶段)中的所有行,包括表(研究)中零或空相关记录的位置?
谢谢
最佳答案
LEFT JOIN
中的表顺序错误:
SELECT staging.*, COUNT(studies.PMID) AS refcount
FROM staging LEFT JOIN
studies
ON studies.rs_number = staging.rs
GROUP BY staging.idstaging;
LEFT JOIN
将所有内容保留在第一个(“左侧”)表中,并将所有匹配的行保留在第二个表中。如果要将所有内容保留在staging
表中,请首先将其放置。而且,如果有人想抱怨
staging.*
与GROUP BY
一起使用。这种特定用法(可能)符合ANSI,因为staging.idstaging
是(可能)该表中的唯一ID。关于mysql - 在相关表的count()中包含null和零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35114420/