当我按如下方式查询 mysql 数据库时,出现如标题所示的错误。 不知道为什么,问题出在 group by 语句上,但我尝试了几种变体,但似乎没有任何效果。
SELECT TableA.Name, DATE_FORMAT(TableB.Date, '%b %d %Y') AS "Date", COUNT(TableB.TableBID)
FROM TableA
INNER JOIN TableB
ON TableA.TableAID = TableB.TableAID
WHERE TableA.Name = "john"
GROUP BY DATE(TableB.Date)
HAVING DATE_FORMAT(TableB.Date, '%b %d %Y') >= "Apr 12 2014"
ORDER BY MAX(TableB.TableAID) ASC;
最佳答案
您应该在 group by
之前使用 where
条件进行比较。而且,您应该对日期而不是字符串进行比较:
SELECT a.Name, DATE_FORMAT(b.Date, '%b %d %Y') AS "Date", COUNT(b.TableBID)
FROM TableA a INNER JOIN
TableB b
ON a.TableAID = b.TableAID
WHERE a.Name = 'john' AND
b.date >= '2014-04-12'
GROUP BY DATE(b.Date)
ORDER BY MAX(b.TableAID) ASC;
您想要在 where
中进行过滤的原因是它可以减少馈送到聚合算法的数据的大小。您想要使用日期而不是字符串的原因是因为您不希望“三月”位于“四月”之后。请注意,我还将日期常量上的分隔符更改为单引号。
关于mysql - "TableB.Date"中的未知列 'having clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136477/