以下 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`";
尽管我在 GROUP BY
中指定了 email.id
的别名。
如果我将 GROUP BY 中的别名 email_id
替换为 email.id
,就可以了。
但为什么我不能在 GROUP BY 中使用别名以及它如何适用于其他别名,如 phone_id
、phone_type_id
、email
等等?
最佳答案
由于 mysql 扩展了 mysql 标准并允许您在 group by 子句中使用列别名,您唯一需要注意的是不要在任何引用的表中使用与现有字段名称相同的别名from 子句。
如果您使用与现有字段相同的别名,则 mysql 会将 group by 子句解释为好像它引用了现有字段,而不是别名字段。这会导致上述错误消息。
关于php - mysql group by column 指定别名时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37250437/