如果我知道另一个表中的值而不是ID,那么如何从表中选择行?

时间:2014-11-29 13:46:57

标签: mysql join

我有这个表格结构(我自己做了,你可以自由地说,如果你觉得它很糟糕并提供更好的例子) Tables 在一个房间中可以找到几个图像,这些图像映射在表格image_room中。 Image_room看起来像

image_id | room_id
    1 | 1
    2 | 1
    3 | 1
    4 | 2
    5 | 3
    6 | 4

ID为1的房间包含三张图片

我从桌子上知道了guid。如何根据我在MySQL中知道的GUID号选择房间中的所有image_name?

我知道guid XXX。选择我想知道XXX在房间表中有room_id 1。我的地图表说图像1,2和3都在那个房间里。

2 个答案:

答案 0 :(得分:1)

执行此操作的常规方法是使用明确的join

select i.image_name
from room r inner join
     image_room ir
     on r.room_id = ir.room_id inner join
     image i
     on ir.image_id = i.image_id
where r.guid = @GUID;

您应该将id列声明为主键,可能是自动递增的主键,以获得更好的性能。

答案 1 :(得分:0)

尝试以下:

select image_name from image where image_id in (select image_id from image_room where room_id in (select room_id from room where room_guid = 'xxx'))