指定别名时{mys} group by column error

时间:2016-05-16 09:16:36

标签: php mysql

以下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_idphone_type_idemail等其他别名?

1 个答案:

答案 0 :(得分:2)

由于mysql扩展了mysql标准并允许您在group by子句中使用列别名,因此唯一需要注意的是不要在任何引用的表中使用与现有字段名相同的别名。 from子句。

如果你使用与现有字段相同的别名,那么mysql将解释group by子句,就好像它是对现有字段进行了解释,而不是对于别名字段。这会导致上述错误消息。