gpt4 book ai didi

mysql - 从具有特定值的表中获取值列表

转载 作者:行者123 更新时间:2023-11-30 21:41:18 25 4
gpt4 key购买 nike

在下面的查询中,用户获取某辆车的所有详细信息;例如:车轮 - 红色,座椅 - 蓝色

SELECT mc.car_name,
GROUP_CONCAT(CONCAT(cp.car_parts, ' - ', cd.car_detail) separator ',') AS
detail_values
FROM my_cars mc
LEFT JOIN cars_detail cd ON mc.id = cd.id_car
LEFT JOIN car_parts cp ON cd.id_parts = cp.id_parts
WHERE id_car = 1
GROUP BY car_name;

当用户进行搜索时,例如用作参数的颜色“红色”应该返回完全相同的值;也就是说,用户想要获取汽车的所有详细信息,其中一个详细信息是颜色“红色”

SELECT mc.car_name,
GROUP_CONCAT(CONCAT(cp.car_parts, ' - ', cd.car_detail) separator ',') AS detail_values
FROM my_cars mc
LEFT JOIN cars_detail cd ON mc.id = cd.id_car
LEFT JOIN car_parts cp ON cd.id_parts = cp.id_parts
WHERE id_car = 1
AND cd.car_detail LIKE 'red' //Illustrative example that returns a wrong result
GROUP BY car_name;

如何做到这一点?

这是一个 SQL fiddle :http://www.sqlfiddle.com/#!9/6f26b4/4

最佳答案

您的标准的快速修复是使用 exists ,如果您在同一查询中对汽车属性 cars_detail 应用过滤器,相关行将被过滤掉并且 GROUP_CONCAT 不会显示排除的汽车属性。

SELECT mc.car_name,
GROUP_CONCAT(CONCAT(cp.car_parts, ' - ', cd.car_detail) separator ',') AS detail_values
FROM my_cars mc
LEFT JOIN cars_detail cd ON mc.id = cd.id_car
LEFT JOIN car_parts cp ON cd.id_parts = cp.id_parts
WHERE id_car = 1
AND EXISTS(
SELECT 1
FROM cars_detail
WHERE car_detail LIKE 'red'
AND cd.id_car = id_car
)
GROUP BY car_name

Demo

关于mysql - 从具有特定值的表中获取值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51408517/

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