用于在列中搜索值的子查询

时间:2014-05-03 17:31:18

标签: mysql sql subquery

有两个表,hotelhotel_bookinghotel_booking表有两列:

hotel_id
date_booked 

hotel_id来自1-10,对于每一个,如果已经预订,则会输入日期。

我需要搜索所有未在特定日期预订的hotel_id。我尝试过使用NOT IN,但它会返回所有与该日期不匹配的日期输入,所以不等于。

这不起作用,但这是我到目前为止所做的:

SELECT * FROM hotel_booking WHERE date != "29/01/2014"

我知道我必须做某种子查询,但我不知道从哪里开始。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM hotel_booking WHERE date!=" 2014-01-29"

答案 1 :(得分:0)

您可以使用此查询:

SELECT h.hotel_id
FROM hotel h
  LEFT JOIN (SELECT * 
              FROM hotel_booking b
              WHERE date = "29/01/2014"
             ) excluded
  ON excluded.hotel_id = h.hotel_id
WHERE excluded.hotel_id IS NULL

或者也是这个:

SELECT hotel_id
FROM hotel h
WHERE NOT EXISTS (SELECT NULL
                  FROM hotel_booking hb
                  WHERE hb.hotel_id = h.hotel_id
                  AND date = "29/01/2014")