我希望这不是一个非常迟钝的问题。我注意到MySQL会让我回到我的GROUP和ORDER中的“Mnth”字段。在我使用的每个数据库引擎中都不是这种情况。任何人都可以认为这是一个好的方法吗?
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
答案 0 :(得分:3)
没关系。来自http://dev.mysql.com/doc/refman/5.0/en/select.html:
可以使用AS alias_name为select_expr指定别名。别名用作表达式的列名,可用于GROUP BY,ORDER BY或HAVING子句。
我不喜欢那个LIKE条款。是不是可以测试另一列而不必对字符串执行LIKE?
答案 1 :(得分:3)
在MySql中可以接受:
见这里:http://dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html
请注意,如果您正在尝试关注 标准的SQL,你不能使用 GROUP BY子句中的表达式。您 可以解决这个限制 使用表达式的别名...
...暗示你可以在MySql中使用表达式。
答案 2 :(得分:1)
我不知道任何MySQL内部,但我在我们的生产系统中使用了类似的查询,直到今天查询还没有崩溃。所以这不是MySQL核心黑客的答案,只是我的观察。
哦,我忘记了:保证免责声明:因为我说我看不到任何问题,并不代表没有; - )
答案 3 :(得分:1)
恕我直言,查询看起来没问题。
标准SQL不允许在WHERE子句中引用列别名,但您可以使用GROUP BY,ORDER BY或HAVING子句中的别名来引用该列。
http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html