0

我需要列出第 1 天没有预订的房间

我努力了

select HotelRooms
from tblRoom
Where Day <> 1

这向我显示了不等于 2 天使用的房间。但是我有一些房间在第 1 天、第 2 天和第 3 天使用,因此这些房间仍然显示。

我已经搜索并试图弄清楚几个小时,所以任何帮助将不胜感激。

4

2 回答 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 ║
╚═══════╝
于 2013-05-02T00:17:35.280 回答
1

我喜欢这种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
于 2013-05-02T00:31:04.370 回答