【问题标题】:SQL Error unknown column in where clause? [duplicate]在where子句中的SQL错误未知列? [复制]
【发布时间】:2020-06-27 03:11:53
【问题描述】:

编写查询以显示接受订单超过 5 次的酒店所接受的酒店 ID、酒店名称和订单数量。将订单数量的别名命名为“NO_OF_ORDERS”。根据酒店 ID 升序对结果进行排序。

Data Base Image

我写的查询:

select hotel_details.hotel_id, hotel_name, count(orders.hotel_id) as no_of_orders 
from hotel_details join orders on hotel_details.hotel_id = orders.hotel_id
where no_of_orders > 5
group by orders.hotel_id order by no_of_orders; 

出错了:

unkown column 'number_of_orders' in 'where clause'

【问题讨论】:

    标签: sql


    【解决方案1】:

    您需要HAVING 子句,而不是WHERE 子句:

    select
        hd.hotel_id,
        hd.hotel_name,
        count(o.hotel_id) as no_of_orders 
    from hotel_details hd
    inner join orders o on hd.hotel_id = o.hotel_id
    group by
        o.hotel_id
    having
        no_of_orders > 5
    order by
        no_of_orders;
    

    订单计数发生在查询的GROUP BY 部分,此时WHERE 已经发生。因此,对来自 GROUP BY 的任何内容的断言都属于 HAVING 子句。

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多