这是mssql版本:

PROCEDURE [dbo].[GetBranchIds]
    @WebsiteId INT,
    @BranchIds VARCHAR(1000) OUTPUT
AS
BEGIN
    SELECT @BranchIds = COALESCE(@BranchIds + ',', '') + CAST(BranchId AS VARCHAR)
    FROM Dealer WITH (NOLOCK)
    WHERE WebsiteId = @WebsiteId
END

经销商表包含以下列:
布兰奇,网站ID。在这个SP的输出变量中,我们得到如下分支id:
126512651265,5,5,5号
我正在将其转换为mysql,我尝试了:
PROCEDURE `GetBranchIds`(
v_WebsiteId int,
out BranchIds varchar(1000))
BEGIN
    set @BranchIds := null;

    select @BranchIds := (CONCAT(COALESCE(CONCAT(BranchIds,','), ''),BranchId))
    from dealer
    where websiteid = v_WebsiteId;
END

但是我得到不同行的输出,比如第一行1265,第二行1265等等。我想要以逗号分隔的格式输出,比如126512651265,5,5,5。我在mysql版本中做错了什么?

最佳答案

尝试使用group_concat()函数:

select group_concat(BranchId) INTO @BranchIds
from dealer where websiteid = v_WebsiteId;

关于mysql - mysql:使用COALESCE以逗号分隔的格式选择多个行值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44692445/

10-11 07:10