我使用此代码对设备进行分组,但是当 id_material 没有设备时,id_material 没有显示。
select
material.id_material,
material.mat_part_number,
group_concat(distinct equipment.equipment_name order by equipment.equipment_name separator ', ') as equipment
FROM material
INNER JOIN equipment_list ON material.id_material=equipment_list.PKid_material INNER JOIN equipment ON equipment_list.PKid_equipment=equipment.id_equipment group by id_material;
我希望它看起来像这样
+-------------+----------------+
| id_material | equipment |
+-------------+----------------+
| 1000001 | eq1 |
| 1000002 | eq1, eq2 |
| 1000003 | eq3 |
| 1000004 | |
+-------------+----------------+
但只出现这个
+-------------+----------------+
| id_material | equipment |
+-------------+----------------+
| 1000001 | eq1 |
| 1000002 | eq1, eq2 |
| 1000003 | eq3 |
+-------------+----------------+
我应该把 NULL 条件放在哪里?
最佳答案
我刚刚修改了您的查询,这可能对您有帮助。
SELECT
material.id_material,
material.mat_part_number,
GROUP_CONCAT(
DISTINCT equipment.equipment_name
ORDER BY
equipment.equipment_name SEPARATOR ', '
) AS equipment
FROM
material
LEFT JOIN equipment_list ON material.id_material = equipment_list.PKid_material
LEFT JOIN equipment ON equipment_list.PKid_equipment = equipment.id_equipment
GROUP BY
id_material;
关于MYSQL GROUP_CONCAT 包括 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586609/