这里相当简单的问题,但搜索了一段时间后我无法找到答案。
我有两张桌子,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 值列出每个值?)非常感谢!