我有两个MySQL表,如下例所示:
汽车
Id CAR NAME AGE
1 Ford 2 years
2 AUDI 1 years
3 Ford 2 years选项
Id id_car option
1 1 ESP
2 2 ABS
3 3 ABS
4 3 ESP我需要选择所有2岁的汽车,其中有防抱死和电除尘器。因此,在这个例子中,它应该返回:3 Ford
发布于 2011-01-26 14:36:29
小组成员将确保汽车具有所需的两种功能。
select c.id, c.name
from cars c
inner join options o
on c.id = o.id_car
and o.option in ('ABS','ESP')
where c.age = 2
group by c.id, c.name
having count(distinct o.option) = 2发布于 2011-01-26 14:36:53
SELECT * FROM CARS WHERE id IN
(SELECT id_car FROM OPTIONS WHERE GROUP_CONCAT(option) ='ABS,ESP'
GROUP BY id_car)
WHERE age ='2 years' GROUP BY CARS.name发布于 2011-01-26 14:34:12
您需要在OPTIONS表上使用一个联接:
SELECT c.* FROM CARS c
JOIN OPTIONS o ON o.id_car=c.id AND o.option='ABS'
JOIN OPTIONS o2 ON o2.id_car=c.id AND o2.option='ESP'
WHERE c.age >= 2或子查询:
SELECT c.* FROM CARS c
WHERE c.age >= 2
AND c.id IN ( SELECT o.id_car FROM OPTIONS o WHERE o.id_car=c.id AND o.option='ABS')
AND c.id IN ( SELECT o.id_car FROM OPTIONS o WHERE o.id_car=c.id AND o.option='ESP')https://stackoverflow.com/questions/4805646
复制相似问题