2016-11-23 52 views
2

我有一個臨時表導致這個充滿GROUP BY錯誤 -爲了和SELECT子句

number contact_id  email   email_id 
8  204   [email protected]   185 
8  205   [email protected]   186 

我需要獲取結果與email列分組查詢。

當我嘗試這一點 -

SELECT number, contact_id, email_id 
     FROM  contact 
     GROUP BY email 
     ORDER BY contact_id, email_id 

它給出了一個FULL_GROUP_BY誤差

SELECT列表是不是在GROUP BY子句中包含非聚合列...

當我修改select子句以使用ANY_VALUE關鍵字作爲

SELECT ANY_VALUE(number), ANY_VALUE(contact_id), ANY_VALUE(email_id) 

它給出了一個誤差 - ORDER BY子句的

表達#1不處於GROUP BY子句和包含非聚集列「CONTACT_ID」,這並不功能取決於由子句中組的列;這是不符合sql_mode = only_full_group_by

有沒有什麼辦法可以將結果分組email並只返回一行?

如任

8  204   [email protected]   185` 

OR

8  205   [email protected]   186 

注:我需要做的啓用(MySQL的5.7+)此一致only_full_group_by模式。我也無法刪除任何order_by條款。

+0

使用'SELECT號,CONTACT_ID,EMAIL_ID,電子郵件,聯絡小組的電子郵件ORDER BY CONTACT_ID,email_id' – RJParikh

+0

謝謝,但在選擇列表中沒有組將錯誤由作爲CONTACT_ID是不是在GROUP BY,如果我們這樣做 - 它會導致這兩個行,我想要任何一行被返回 – jitendrapurohit

+0

使用:'SELECT min(number),email FROM contact GROUP BY email ORDER BY contact_id,email_id' – RJParikh

回答

0

我已經設法解決這個問題,下面的查詢。如果有人有更好的辦法,請發表回答。

SELECT ANY_VALUE(number), ANY_VALUE(contact_id), ANY_VALUE(email_id) 
    FROM  contact 
    GROUP BY email 
    ORDER BY MIN(contact_id), MIN(email_id)