首页 > 解决方案 > 从数据库中获取不是来自特定月份的值

问题描述

我正在尝试获取在“5 月 19 日”月份未接受任何订单的酒店 ID、酒店名称和酒店类型,但我没有得到正确的输出我的查询有什么问题?

select hotel_details.hotel_id,hotel_name,hotel_type 
from hotel_details inner join orders on hotel_details.hotel_id=orders.hotel_id 
where Month(order_date) between 1 and 4 or Month(order_date) between 6 and 12 
order by hotel_id; 

我的表结构

标签: mysql

解决方案


NOT EXISTS2019年5月酒店是否有订单,您可以使用以下方式查询:

SELECT hotel_id, hotel_name, hotel_type 
FROM hotel_details 
WHERE NOT EXISTS (
  SELECT 1 
  FROM orders 
  WHERE hotel_id = hotel_details.hotel_id 
    AND MONTH(order_date) = 5 
    AND YEAR(order_date) = 2019
)

子查询EXISTS检查hotel_id2019 年 5 月的订单是否可用。在过滤器NOT前面使用 2019 年 5EXISTS月没有订单的所有酒店。子查询使用 连接到查询的外部hotel_id = hotel_details.hotel_id


推荐阅读