2017-09-14 24 views
1

我想用一個distinct電子郵件獲取一些數據。如何獲取MAX數據,其中最大ID

我的代碼如下:

SELECT DISTINCT Email, 
       Degree, 
       Majority 
FROM job_education a 
WHERE a.Status = 'Active' 
AND a.IdEducationLevel = (
          SELECT Max(b.IdEducationLevel) 
          FROM job_education b 
          WHERE b.Status='Active' 
          AND a.Email = b.Email 
         ) 

由於之前

+2

如果您可以提供一些樣品數據和預期產量,那將是非常好的 – Hatik

+0

您在'想要'的時候失去了我。 – Strawberry

+3

你的代碼有什麼問題? –

回答

1

您的代碼應該沒問題,但我會修復表別名:

SELECT je.* 
FROM job_education je 
WHERE je.Status = 'Active' AND 
     je.IdEducationLevel = (SELECT MAX(je2.IdEducationLevel) 
          FROM job_education je2 
          WHERE je2.Status = 'Active' AND je2.Email = je.Email 
          ); 

如果你正在爲給定的電子郵件多行 - 你只需要一個行 - 然後在子查詢中使用更好ID:

SELECT je.* 
FROM job_education je 
WHERE je.Status = 'Active' AND 
     je.job_education_id = (SELECT je2.job_education_id 
          FROM job_education je2 
          WHERE je2.Status = 'Active' AND je2.Email = je.Email 
          ORDER BY IdEducationLevel DESC, job_education_id DESC 
          LIMIT 1 
          ); 

我發明了被稱爲job_education_id的ID,此目的。請注意,此查詢使用ORDER BYLIMIT而不是聚合函數。

1

你應該使用一個連接
你的好意(子選擇不能看到上面參考表一)

SELECT DISTINCT Email, 
      Degree, 
      Majority 
    FROM job_education a 
    INNER JOIN (
     SELECT b.Email, Max(b.IdEducationLevel) max_IdEducationLevel 
     FROM job_education b 
     WHERE b.Status='Active' 
     GROUP BY b.Email 

    ) t ON a.Email = t.Email and a.IdEducationLevel = t.maxy_IdEducationLevel 
    WHERE a.Status = 'Active' 
相關問題