【发布时间】:2026-01-17 07:10:01
【问题描述】:
我有三张桌子
表_1:车辆
id name
-------
1 Honda
2 Ferrari
3 wagon
表_2:extra_details
ID Detail
------------------------
1 GPS
2 CAMERA
3 Tracking System
Table_3:vehcile_extras
vehicle_id extra_detail_id
--------------------------
1 2
1 3
3 2
现在一辆车可能有不止 1 个额外的东西,比如 GPS、跟踪系统等,所以我创建了 1 个额外的东西
用于存储带有车辆 id 和 extra_detail_id 的东西的表
我想要所有车辆数据,如果某些车辆有额外的详细信息,我会显示那些用逗号分隔的数据(如果不为空)
我的查询
我的查询:
SELECT v.* , GROUP_CONCAT(e.name SEPARATOR ', ') as additional_details FROM vehicles v
left join vehcile_extras ve on ve.vehicle_id = v.id
left join extra_details e on FIND_IN_SET(ve.extra_detail_id, e.id)
结果类似,
id name additional_details
----------------------------------
1 Honda CAMERA,Tracking System
3 wagon CAMERA
我想要这样的
id name additional_details
----------------------------------
1 Honda CAMERA,Tracking System
2 Ferrari null
3 wagon CAMERA
我知道我可以使用 UNION ALL 实现这一点,但我想知道是否有任何其他技巧可以在没有联合的情况下获取所有数据?
【问题讨论】: