[英]Using a Sub-Select as a Returned Column
是否可以将子查询用作查询的返回列之一?
例如,我正在使用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中甚至更容易。 签出GROUP_CONCAT函数。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.