我有一个临时表,结果是这个 -
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
条款。
答案 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)