2012-02-06 33 views
0

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

回答

1

profile_id列同時存在於你的profiles表,並在resumes你的子查詢,因爲你正在使用SELECT *,你得到它回來兩次。

而是明確列出SELECT中的所有列,包括適當的表前綴。

SELECT profiles.profile_id, ... 
+0

謝謝!只需更改爲選擇profiles.profile_id,profiles.name,...做到了 – jsuissa 2012-02-06 22:35:42

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