我有两个名为Services
和Images
的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;
有人可以告诉我如何正确地进行此查询吗?
谢谢。
答案 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
)