我需要列出第 1 天没有预订的房间
我努力了
select HotelRooms
from tblRoom
Where Day <> 1
这向我显示了不等于 2 天使用的房间。但是我有一些房间在第 1 天、第 2 天和第 3 天使用,因此这些房间仍然显示。
我已经搜索并试图弄清楚几个小时,所以任何帮助将不胜感激。
我需要列出第 1 天没有预订的房间
我努力了
select HotelRooms
from tblRoom
Where Day <> 1
这向我显示了不等于 2 天使用的房间。但是我有一些房间在第 1 天、第 2 天和第 3 天使用,因此这些房间仍然显示。
我已经搜索并试图弄清楚几个小时,所以任何帮助将不胜感激。
SELECT a.Rooms
FROM tblRooms a
WHERE NOT EXISTS
(
SELECT b.Rooms
FROM tblRooms b
WHERE a.Rooms = b.Rooms AND
b.Day = 1
)
记录可能与您的记录不同,但查询的想法或想法仍然相同。
假设你有这些记录,
╔═══════╦═════╗
║ ROOMS ║ DAY ║
╠═══════╬═════╣
║ 1 ║ 1 ║
║ 1 ║ 2 ║
║ 2 ║ 2 ║
║ 3 ║ 3 ║
║ 4 ║ 1 ║
║ 4 ║ 2 ║
║ 4 ║ 3 ║
╚═══════╩═════╝
上面查询的输出是
╔═══════╗
║ ROOMS ║
╠═══════╣
║ 2 ║
║ 3 ║
╚═══════╝
我喜欢这种NOT EXISTS
方法,但您也可以使用NOT IN
:
SELECT Rooms
FROM tblRooms
WHERE Rooms NOT IN (
SELECT Rooms
FROM tblRooms
WHERE day = 1)
或者我更喜欢什么,将表格与自身连接并NULL
使用 a进行检查LEFT JOIN
:
SELECT a.Rooms
FROM tblRooms a
LEFT JOIN tblRooms a2 On a.Rooms = a2.Rooms And a2.Day = 1
WHERE a2.Rooms Is NULL