簡體   English   中英

使用子選擇作為返回列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM