mysql - "TableB.Date"中的未知列 'having clause'

标签 mysql sql

当我按如下方式查询 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/

相关文章:

php - 按 ID 和时间戳计算多个表中的行数

java - 我想我用错了 JDBC

mysql - Rails SQL 按最近收藏的帖子排序

sql - 选择按最后日期加入到具有重复日期记录的表的非重复记录

MySQL:用 FROM 子句中的相关子查询重写 MSSQL?

mysql - 加载数据 infile 不适用于 datetime 周围的引号

php - 需要有关 mysql 连接的帮助

java - MySQL中逐行添加和多行添加之间最快的是什么

mysql - SQL Server SELECT 以 Parameter 开头的行

sql - 在 case 语句中使用 sql 计数