gpt4 book ai didi

mysql - 查找所有使用相同零件类型的汽车

转载 作者:行者123 更新时间:2023-11-29 23:40:56 24 4
gpt4 key购买 nike

给定表格:

parts (part_id, part_desc, type_id, car_id)
types (type_id, type_name)
cars (car_id, car_model, car_make)

我想查找拥有属于品牌“Honda”和型号“Civic”的所有类型零件的汽车的 ID、型号和品牌。也就是说,如果本田思域有类型 A,B,C然后它会找到所有拥有属于 A 的零件的汽车和 BC

我不确定如何做到这一点,但我设法做到了 ABC

SELECT DISTINCT c.car_id, c.car_model, c.car_make
FROM cars c, parts p
WHERE c.car_id= p.car_id AND p.type_id IN (
SELECT p.type_id FROM cars c, parts p
WHERE a.car_id = p.car_id
AND a.car_model = 'Civic'
AND a.car_make = 'Honda'
)

内部查询获取本田思域的所有类型零件,但 IN() 子句将匹配仅具有 A,B,C 中的 1 个的汽车。但不是全部。

我想避免使用 ALLANY设置运算符。另外A,B,C是一个例子,不要从字面上理解它在答案中的硬编码。子查询的结果是未知的。

最佳答案

为了避免使用“all”等词语,请使用两个否定重新表述问题:
您想要的汽车不存在本田思域有的类型,但该车没有。

SELECT *
FROM cars
WHERE NOT EXISTS (SELECT 1
FROM types CivicTypes
JOIN parts CivicParts USING (type_id)
WHERE car_id = (SELECT car_id
FROM cars
WHERE car_make = 'Honda'
AND car_model = 'Civic')
AND NOT EXISTS (SELECT 1
FROM types JOIN parts USING (type_id)
WHERE type_id = CivicTypes.type_id
AND car_id = cars.car_id)
)

关于mysql - 查找所有使用相同零件类型的汽车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26162207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com