如何列出列中的所有值,然后在子查询中不重复就列出?

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

以上是关于如何列出列中的所有值,然后在子查询中不重复就列出?的主要内容,如果未能解决你的问题,请参考以下文章

如何利用EXCEL VBA将一列数据中不重复的数据读取到数组中?

如何在子查询中使用主查询中的列?

如何从 DB2 将所有列值作为 xml 属性返回?

SQL 函数在没有主键的表中列出列

SQL查询从通配符列等于值的所有表中选择所有行[重复]

SQL查询从通配符列等于值的所有表中选择所有行[重复]