Sql 如何使用子查询将这些查询合并为1

Sql 如何使用子查询将这些查询合并为1,sql,subquery,correlated-subquery,Sql,Subquery,Correlated Subquery,如何将这两个查询合并为一个查询?使用UNION获取不同的元素,或UNION ALL获取两个表中的所有行 Select * from HotelPerson Where RoomID IN (select ID from HotelRoom Where BookingID = 36 ) Select * from HotelCancelationPolicy Where RoomID IN (select ID from HotelRoom Where BookingID = 36

如何将这两个查询合并为一个查询?

使用
UNION
获取不同的元素,或
UNION ALL
获取两个表中的所有行

 Select * from HotelPerson 
 Where RoomID IN (select ID from HotelRoom Where BookingID = 36 )

 Select * from HotelCancelationPolicy 
 Where RoomID IN (select ID from HotelRoom Where BookingID = 36 )

我猜你想把这两个表连接起来:

 Select * from HotelPerson 
 Where RoomID IN (select ID from HotelRoom Where BookingID = 36 )
 UNION ALL
 Select * from HotelCancelationPolicy 
 Where RoomID IN (select ID from HotelRoom Where BookingID = 36 )

这将为您提供一个表中两个表中的所有列

    select * 
      from HotelPerson hp
inner join HotelCancelationPolicy hcp
        on hp.RoomId = hcp.RoomId
     where hp.RoomID IN (select ID 
                           from HotelRoom 
                          where BookingID = 36 )

Argh,不要对
WHERE
子句使用隐式联接,请使用显式联接。这种语法已经过时了,我不打算投反对票,但这是一个巨大的(有缺陷的)假设,即它们的表结构是相同的;否则,联合将失败。我假设您希望两个查询的结果都在一行中?只需在
RoomID上进行内部连接
SELECT * 
FROM HotelPerson A, HotelCancelationPolicy B
WHERE A.RoomID = B.RoomID
AND A.RoomID IN (SELECT ID FROM HotelRoom WHERE BookingID = 36)