簡體   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