考虑以下数据结构:
parking garages
|
|_ garage 1
|__ red car
|__ blue car
|_ garage 2
|__ yellow car
|__ orange car
|_ garage 3
|__ red car
|__ red car
|__ yellow car
“停车库”是一张桌子,每个条目都是“garageCars”表的外键,其中包含车库中每辆车的一条记录。
我想做的是写一个返回“车库3”的查询,因为它有2辆红色汽车
我已尝试将HAVING子句与count一起使用,但这会返回所有超过1 car的行。我需要更多的东西“WHERE count(car)> 1和car.color = car.color”。
答案 0 :(得分:3)
假设你只想要车库名称,而不是那种被欺骗的颜色,因为你想要“...将返回的查询”车库3“因为它有2辆红色汽车”
使用派生表
SELECT g.garagename
FROM garage g
INNER JOIN (SELECT garage_id
FROM cars
GROUP BY garage_id,
carcolor
HAVING COUNT(garage_id) > 1) c
ON g.garage_id = c.garage_id
使用IN
SELECT g.garagename
FROM garage g
WHERE g.garage_id IN (SELECT garage_id
FROM cars
GROUP BY garage_id,
carcolor
HAVING COUNT(garage_id) > 1)
你也可以用EXISTS,CROSS APPLY或CTE
来做