2012-02-13 42 views
0

是否有可能使用子查詢作爲查詢的返回列之一?使用子選擇作爲返回列

例如,我正在使用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; 

然而,問題是,我需要返回內的另一個選擇連同從(例如)的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 .... 

任何人都可以闡明這是否是這樣做的正確方法的一些情況,如果有更好的方法,或如果它甚至可能?

非常感謝提前。

回答

2

在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 
+0

這看起來就像我在做什麼。不知道我以前怎麼沒有遇到過!我會嘗試一下。感謝您的快速響應。 – DBPaul 2012-02-13 21:22:59