MYSQL查询结果中出现重复列的问题

时间:2012-02-06 22:27:41

标签: mysql

下面的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 = ? 

2 个答案:

答案 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 = ?