如何列出列中的所有值,然后在子查询中不重复就列出?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何列出列中的所有值,然后在子查询中不重复就列出?相关的知识,希望对你有一定的参考价值。
这里的问题很简单,但搜索了一阵子后我一直找不到答案。
我有两个桌子,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语句中使用hotel_room.guestid与guest.guestid?有没有一种方法可以使它仅返回每个值一次(例如,在将它们全部列出后,在guest_big列中仅返回NULL,而不是将每个值都与all_guest值一起列出?)非常感谢!
答案
尝试一下。
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
以上是关于如何列出列中的所有值,然后在子查询中不重复就列出?的主要内容,如果未能解决你的问题,请参考以下文章