我试图从两个不同的表中列出两个属性(booking.roomno和room.price),条件是“ booking.DATETO不为空”。

表:预订!桌子:房间!

我尝试使用此命令

 select booking.roomno,room.price
 from booking
 inner join room on booking.ROOMNO=room.roomno
 where booking.dateto is not null


尽管返回的结果带有重复的房号和价格,如下所示

最佳答案

room.roomno不是唯一的。它仅在给定的酒店中唯一,并且您的房间表包含多个酒店。您还必须在加入条件中指定hotelno。另外,由于您可能在同一房间进行多次预订(即预订表中有重复的预订),因此您需要执行DISTINCT来防止这种情况发生(但随后您必须在字段列表中包括hotelno列):

select DISTINCT booking.roomno,room.price, room.hotelno
from booking
inner join room on booking.ROOMNO=room.roomno
   AND booking.hotelno=room.hotelno
where booking.dateto is not null

关于mysql - 使用内部联接时,MYSQL结果重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29726986/

10-10 22:08