题
我希望这不是一个非常迟钝的问题。我注意到,MySQL将让我参考回到“Mnth”字段在我的团队和秩序。这不是在每个数据库引擎我使用过的情况。任何人都可以confim,这是一个好办法?
SELECT DATE_FORMAT(FROM_UNIXTIME(`swauditlogs`.`dateline`),'%Y-%m') AS Mnth, Count(`swauditlogs`.`ticketid`) AS Count
FROM swauditlogs LEFT JOIN swtickets ON swauditlogs.ticketid = swtickets.ticketid
WHERE swauditlogs.actionmsg Like 'Ticket status changed from:%to: Closed'
GROUP BY Mnth
ORDER BY Mnth DESC
解决方案
这是确定的。从 http://dev.mysql.com/doc/refman/5.0 /en/select.html :
一个select_expr可以给出使用AS ALIAS_NAME的别名。别名用作表达式的列名,并且可以在GROUP BY,ORDER BY,或HAVING子句中使用。
我不喜欢LIKE子句虽然。是不是有可以测试,而不必对字符串进行LIKE另一列?
其他提示
这是可接受的,MySQL的:
在这里看到: HTTP:// dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html
请注意,如果你正在试图跟随 标准的SQL,你不能使用 表现在GROUP BY子句。您 可以解决此限制由 使用别名的表达...
...这意味着你可以使用表达式与MySQL。
我不知道任何MySQL的内部,但我在我们的生产系统中使用类似的查询,并且直到今天查询没有崩溃呢。因此,这是没有MySQL的核心黑客的答案,只是我的观察。
哦,我忘了:免责声明:的只是因为我说,我看不出有什么陷阱,并不意味着有没有; - )
IMHO,查询没问题的MySQL。
标准SQL不允许到列的别名的引用WHERE子句中但可以使用在GROUP BY,ORDER BY别名,或HAVING子句来引用列。
http://dev.mysql.com /doc/refman/5.0/en/problems-with-alias.html