-2

这里相当简单的问题,但搜索了一段时间后我无法找到答案。

我有两张桌子,hotel_room 和 guest。

每个客人都有一个 ID,该 ID 也存储在 hotel_room 表中。

我想提取所有客人 ID 以及大酒店房间中的所有客人 ID 的列表。到目前为止,我有:

SELECT DISTINCT guest.guestid AS all_guestid
     , hotel_room.guestid AS guestid_big
  FROM guest
     , hotel_room
 WHERE hotel_room.guestid IN(
SELECT DISTINCT guest.guestid
FROM guest
JOIN hotel_room ON guest.guestid = hotel_room.guestid
WHERE room_size = 'big');

但是,这会导致类似:

all_guestid|guestid_big|
-----------+-----------+
1          |1
2          |1
3          |1
4          |1
5          |1
1          |3
2          |3
3          |3
4          |3
5          |3
1          |5
2          |5
3          |5
4          |5
5          |5

等等。基本上,guest_big 值只是重复,而不是只列出每个数字一次。我假设这是因为我必须在 where 语句与 guest.guestid 中使用 hotel_room.guestid?有没有办法做到这一点,所以它只返回每个值一次(例如,在将它们全部列出后,guest_big 列中只返回 NULL,而不是用每个 all_guest 值列出每个值?)非常感谢!

4

1 回答 1

0

尝试这个。

select guest.guestid AS all_guestid , big_guest.guestid
FROM guest LEFT JOIN 
(
SELECT DISTINCT guest.guestid
FROM guest
JOIN hotel_room ON guest.guestid = hotel_room.guestid
WHERE room_size = 'big') big_guest
ON  guest.guestid.big_guest.guestid
于 2020-03-29T04:09:17.907 回答