这是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,网站ID。在此 SP 的输出变量中,我们得到分支 ID,如下所示:1265,1265,1265,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,依此类推。我想要以逗号分隔格式输出,例如 1265,1265,1265,5,5,5。我在这里的mysql版本中做错了什么?
尝试使用 group_concat(( 函数:
select group_concat(BranchId) INTO @BranchIds
from dealer where websiteid = v_WebsiteId;