繁体   English   中英

sql语法有错误

[英]error with sql syntax where having

只是想使这个查询工作,但是对我来说有点困难。

SELECT
    *, 
  COUNT(*) AS total FROM_UNIXTIME(consume_time,'%Y-%m') AS fecha
FROM
    coupon
HAVING
    fecha = '2016-07'
GROUP BY
    partner_id
  1. 你错过了,在选择列表之间AS totalFROM_UNIXTIME

  2. HAVING过滤分组的集合,而WHERE记录进行分组之前对其进行过滤-在这种情况下,您需要后者,但是在评估WHERE子句时,诸如fecha类的别名不可用。 因此,您需要在WHERE子句中重复基础表达式:

     WHERE FROM_UNIXTIME(consume_time,'%Y-%m') = '2016-07' 

    但是,这种方法不是可靠的-更好地将您的文字转换为可以直接过滤consume_time的范围(特别是如果表上有索引):

     WHERE consume_time >= UNIX_TIMESTAMP('2016-07-01') AND consume_time < UNIX_TIMESTAMP('2016-08-01') 

    更好的方法是将consume_time存储为MySQL可以理解的时间数据类型,例如TIMESTAMP (恰好在内部存储为Unix时间戳),而不是一个整数,那么您就可以完全取消转换功能:

     WHERE consume_time >= '2016-07-01' AND consume_time < '2016-08-01' 
  3. 由于您是按partner_id分组的,因此任何结果集列中在功能上均不受其依赖的值将是不确定的。 这可能不是您想要的。 您是否真的要选择除partner_id分组以外的所有列?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM