Mysql 使用子选择作为返回列

Mysql 使用子选择作为返回列,mysql,sql,select,Mysql,Sql,Select,是否可以将subselect用作查询的返回列之一 例如,我使用的是MySql,我有一个表,其中包含与某些数据相关联的ID列表。我想将与另一个表中给定数据项相关联的ID转换为逗号分隔的VarChar列表。我知道我可以通过以下方法做到这一点: DECLARE pr_StudentId INT; -- An input parameter DECLARE @Classes VARCHAR(4096); SELECT @Classes = COALESCE(@Classes + ',', '')

是否可以将subselect用作查询的返回列之一

例如,我使用的是MySql,我有一个表,其中包含与某些数据相关联的ID列表。我想将与另一个表中给定数据项相关联的ID转换为逗号分隔的VarChar列表。我知道我可以通过以下方法做到这一点:

DECLARE pr_StudentId INT;   -- An input parameter

DECLARE @Classes VARCHAR(4096);

SELECT @Classes = COALESCE(@Classes + ',', '') + ClassTable.ClassId
FROM ClassTable, StudentTable
WHERE ClassTable.Id = StudentTable.Id
AND StudentTable.Id = p_StudentId;
但是,问题是我需要在另一个SELECT中返回该值,以及(例如)存储过程中StudentTable中的其他数据。到目前为止,我有这个,但我不太确定如何让它工作:

SELECT
    StudentTable.Id,
    StudentTable.Name,
    (
        SELECT @Classes
        FROM
        (
            SELECT @Classes = COALESCE(@Classes + ',','') + ClassTable.ClassId
            FROM ClassTable, StudentTable
            WHERE ClassTable.Id = StudentTable.Id
        )
    ) AS ClassList,
    ...
FROM StudentTable ....
WHERE ....
有谁能解释一下这是否是正确的方法,是否有更好的方法,或者这是否可能


非常感谢。

使用MySQL更容易。查看函数

SELECT st.Id, st.Name, GROUP_CONCAT(ct.ClassId) AS ClassList
    FROM StudentTable st
        INNER JOIN ClassTable ct
            ON st.Id = ct.Id
    GROUP BY st.Id, st.Name

那看起来正是我想要的。不知道我以前怎么没遇到过!我试试看。谢谢你的快速回复。