SQL Server - 查询结果,其中字段cant = 1

时间:2013-05-02 00:12:58

标签: sql sql-server

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

我试过了

select HotelRooms
from tblRoom
Where Day <> 1

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

我已经搜索过并试图弄清楚数小时,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分: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 ║
╚═══════╩═════╝

上面查询的OUTPUT是

╔═══════╗
║ ROOMS ║
╠═══════╣
║     2 ║
║     3 ║
╚═══════╝

答案 1 :(得分:1)

我喜欢NOT EXISTS方法,但您也可以使用NOT IN

SELECT  Rooms
FROM    tblRooms
WHERE Rooms NOT IN (
   SELECT Rooms
   FROM tblRooms
   WHERE day = 1)

或者我喜欢什么,加入表格并使用NULL检查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