从两个表中进行SELECT查询,其中一个记录来自mysql中的匹配行

时间:2015-06-30 08:37:00

标签: mysql

我有两个名为ServicesImages的mysql表。每项服务可能有多个图像。

所以我的问题是,我需要进行SELECT查询,以便为每个服务提供带有一个图像的所有服务。

这是我试过的方式。但它给了我所有服务和所有图像到每个服务。

SELECT s.id
        , s.name
        , s.description
        , i.id as image_id
        , i.image
FROM  services s
LEFT JOIN images i ON i.service_id = s.id;

有人可以告诉我如何正确地进行此查询吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

如果一项服务只需一张图片,您可以group by service id

SELECT s.id
        , s.name
        , s.description
        , i.id as image_id
        , i.image
FROM  services s
LEFT JOIN images i ON i.service_id = s.id
GROUP BY s.id;

答案 1 :(得分:0)

这是获得只有一个图像的所有服务的方法:

SELECT s.id
        , s.name
        , s.description
        , i.id as image_id
        , i.image
FROM  services s
JOIN images i on i.service_id = s.id
WHERE i.service_id in (
  SELECT service_id FROM images GROUP BY service_id HAVING COUNT(*) = 1
)