MySQL从两个表中加入LIMIT 1

时间:2009-12-03 10:25:17

标签: mysql join limit

我有两张桌子。一个有关属性的信息。其他商店为每个物业存储3张图片。在这三个图像中 - 一个被标记为“主要”图像。

所以我有:

Properties:
p_id    name
1   villa a
2   villa b
3   villa c
4   villa d

    Images
i_id p_id main
1    1     0
2    1     0
3    1     1
4    2     0
5    2     1
6    2     0

我需要生成一个查询,该查询返回所有具有主图像id的属性。 e.g。

p_id  name    i_id
1     villa a  3
2     villa b  5

我知道这将涉及使用LIMIT 1和连接,但不知道从哪里开始,我已经尝试通过使用子查询来做到这一点,但觉得它必须比我正在做的更简单....

*我如何* 这样它通过“main”选择前1来命令查询(即如果未设置main,它仍将选择图像)?

5 个答案:

答案 0 :(得分:2)

这是一种方式:

select      *
from        properties p
left join   images i 
on          p.p_id = i.p_id 
and         i.main = 1

如果没有找到主图像,左连接将返回NULL图像。

答案 1 :(得分:1)

你走了:

SELECT p_id, name, i_id
FROM properties p INNER JOIN images i ON (p.p_id = i.p_id AND i.main = 1)

SELECT p_id, name, i_id
FROM properties p INNER JOIN images i ON (p.p_id = i.p_id)
WHERE i.main = 1

答案 2 :(得分:1)

SELECT p.p_id, p.name i.i_id FROM properties p JOIN images i USING p_id where p_id = 1;

答案 3 :(得分:0)

select p.p_id, p.name, i.i_id 
from properties p join images i on p.p_id = i.p_id 
where i.main=1

答案 4 :(得分:0)

您想使用如下查询:

SELECT p.p_id, p.name, i.i_id FROM Images i INNER JOIN Properties p ON p.p_id = i.p_id WHERE i.main = 1