【问题标题】:MySQL sum column and compare it to a given valueMySQL sum 列并将其与给定值进行比较
【发布时间】:2012-11-22 19:33:36
【问题描述】:

我需要从数据库中显示一组可用房间的结果,其中条件是:

  1. alm_num = 1
  2. alm_date 2012 年 11 月 26 日至 29 日之间
  3. 和 sum_num > or = 3

然后我像这样编写mySQL:

select sum(villas_allotment.alm_num) as sum_num, 
villas_allotment.alm_id as aid, villas_db.v_name as vname  
from villas_allotment 
inner join villas_db on villas_allotment.alm_vid=villas_db.v_id 
where alm_num='1' 
and alm_date between '2012-11-26' and '2012-11-29' 
and alm_vid='3' 
and sum_num>='3'

但我有:

#1054 - Unknown column 'sum_num' in 'where clause'

那么你们能否建议我如何从这个错误中幸存下来。 问候,

【问题讨论】:

    标签: mysql string compare sum


    【解决方案1】:

    对于聚合列的条件,您需要使用HAVING

    select
        sum(villas_allotment.alm_num) as sum_num, 
        villas_allotment.alm_id as aid,
        villas_db.v_name as vname  
    from villas_allotment 
    inner join villas_db on villas_allotment.alm_vid = villas_db.v_id 
    where alm_num = '1' 
    and alm_date between '2012-11-26' and '2012-11-29' 
    and alm_vid = '3' 
    group by villas_allotment.alm_id, villas_db.v_name
    having sum(villas_allotment.alm_num) >= 3
    

    您还需要在非聚合列上添加一个 group by 子句,这是我为您添加的。

    【讨论】:

    • 我可以问一个问题吗?为什么我需要一个额外的小组。 (我的 mySQL 很差)。
    • 根据你的代码。似乎我不需要sum(villas_allotment.alm_num) as sum_num, ,因为您在代码的其他任何地方都没有提到sum_num。我会吗?
    • 我遇到了问题。代码不是选择帮助sum(villas_allotment.alm_num)>=3。 alm_num(int) 只包含 0 和 1。
    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 2015-08-12
    • 2015-10-06
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    相关资源
    最近更新 更多