下面的MYSQL语句按预期工作,列出简历中使用配置文件的实例数。
但是,它会返回profile_id列两次。在第二个实例中,如果任何简历中未使用配置文件,则即使存在值,profile_id也会显示为NULL。
我相信我可能需要将DISTINCT添加到查询中,但我尝试过的地方却没有用。
任何建议都将不胜感激。
SELECT *, COALESCE(pc.postcount, 0) AS postcount
FROM profiles
LEFT JOIN (SELECT resumes.profile_id, COUNT(resumes.resume_id) AS postcount
FROM resumes
WHERE 1
GROUP BY resumes.profile_id) pc
ON pc.profile_id=profiles.profile_id
WHERE profiles.user_id = ?
答案 0 :(得分:1)
profile_id
列和profiles
上的子查询中都存在resumes
列,因为您使用的是SELECT *
,所以会将其返回两次。< / p>
相反,明确列出SELECT
中的所有列,包括适当的表前缀。
SELECT profiles.profile_id, ...
答案 1 :(得分:0)
列出SELECT中具有适当表格前缀的所有列。
尝试下面的内容:
SELECT profiles.*,pc.*, COALESCE(pc.postcount, 0) AS postcount
FROM profiles
LEFT JOIN (SELECT resumes.profile_id, COUNT(resumes.resume_id) AS postcount
FROM resumes
WHERE 1
GROUP BY resumes.profile_id) pc
ON pc.profile_id=profiles.profile_id
WHERE profiles.user_id = ?