mysql将每行中的多个列合并为每行中的单个列

mysql将每行中的多个列合并为每行中的单个列,mysql,join,concatenation,Mysql,Join,Concatenation,我有一个表(图1),外键指向另一个表。此表仅包含FK/Id到另一个表,共有5列。可能并不总是有一个值,所以如果没有我插入的-1,这是在datagridview vb.net中完成的。每个id都有一个关联的名称。因此,在带有FK的表(图1)中,是否有一种方法可以查询每个id的名称,然后为每一行连接/连接到一列中?我可以进行查询并分别返回每个名称(图2),但不太清楚如何加入所有5个名称。我对这一切都很陌生,所以请告诉我我是否有点神经错乱,我需要采取不同的方法。多谢各位 SELECT s.id, g

我有一个表(图1),外键指向另一个表。此表仅包含FK/Id到另一个表,共有5列。可能并不总是有一个值,所以如果没有我插入的-1,这是在datagridview vb.net中完成的。每个id都有一个关联的名称。因此,在带有FK的表(图1)中,是否有一种方法可以查询每个id的名称,然后为每一行连接/连接到一列中?我可以进行查询并分别返回每个名称(图2),但不太清楚如何加入所有5个名称。我对这一切都很陌生,所以请告诉我我是否有点神经错乱,我需要采取不同的方法。多谢各位

SELECT 
s.id,
g1.name as Grade1_name,
g2.name as Grade2_name,
g3.name as Grade3_name,
g4.name as Grade4_name,
g5.name as Grade5_name,
s.Grades_Name
FROM
sort s
    LEFT OUTER JOIN
grades g1 ON g1.id = s.grade_id_1
    LEFT OUTER JOIN
grades g2 ON g2.id = s.grade_id_2
    LEFT OUTER JOIN
grades g3 ON g3.id = s.grade_id_3
    LEFT OUTER JOIN
grades g4 ON g4.id = s.grade_id_4
    LEFT OUTER JOIN
grades g5 ON g5.id = s.grade_id_5

我能用它工作。不确定这是不是好代码,但它满足了我的需要

SELECT 
s.id,
CONCAT_WS(", ", g1.name, g2.name, g3.name, g4.name, g5.name) AS GradeNames
FROM
sort s
    LEFT OUTER JOIN
grades g1 ON g1.id = s.grade_id_1
    LEFT OUTER JOIN
grades g2 ON g2.id = s.grade_id_2
    LEFT OUTER JOIN
grades g3 ON g3.id = s.grade_id_3
    LEFT OUTER JOIN
grades g4 ON g4.id = s.grade_id_4
    LEFT OUTER JOIN
grades g5 ON g5.id = s.grade_id_5