订单和选择子句中的完整Group BY错误

时间:2016-11-23 06:32:19

标签: php mysql

我有一个临时表,结果是这个 -

number   contact_id      email           email_id
 8       204         ask@gmail.com           185
 8       205         ask@gmail.com           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',它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by

不兼容

有没有办法可以按email对结果进行分组,只返回一行?

例如

8       204         ask@gmail.com           185`

OR

8       205         ask@gmail.com           186

注意:我需要在启用only_full_group_by模式的情况下执行此操作(MySQL 5.7+)。此外,我无法删除任何order_by条款。

1 个答案:

答案 0 :(得分: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)