以下mysql查询会出错:'email.id' isn't in GROUP BY, 1055
SELECT contact_a.id as contact_id,
contact_a.sort_name as `sort_name`,
contact_a.display_name as `display_name`,
phone.id as phone_id,
phone.phone_type_id as phone_type_id,
phone.phone as `phone`,
email.id as `email_id`,
email.email as `email`,
FROM contact_table contact_a
LEFT JOIN email ON (contact_a.id = email.contact_id)
LEFT JOIN phone ON (contact_a.id = phone.contact_id)
GROUP BY contact_a.id,
`sort_name`,
`display_name`,
`phone_id`,
`phone_type_id`,
`phone`,
`email_id`,
`email`";
虽然我在email.id
中指定了GROUP BY
的别名。
如果我将GROUP BY中的别名email_id
替换为email.id
,则可以。
但为什么我不能在GROUP BY中使用别名,以及它如何适用于phone_id
,phone_type_id
,email
等其他别名?
答案 0 :(得分:2)
由于mysql扩展了mysql标准并允许您在group by子句中使用列别名,因此唯一需要注意的是不要在任何引用的表中使用与现有字段名相同的别名。 from子句。
如果你使用与现有字段相同的别名,那么mysql将解释group by子句,就好像它是对现有字段进行了解释,而不是对于别名字段。这会导致上述错误消息。