mysql:使用COALESCE以逗号分隔格式选择多个行值

时间:2017-06-22 07:07:22

标签: mysql sql-server

这是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

经销商表格如下: branchid,websiteid。在这个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版本中做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试使用group_concat()函数:

Contacts::->where(function ($query) use ($searchquery) {
                $query->orWhere('lname', 'LIKE', $searchquery.'%')
                      ->orWhere('lname', 'LIKE', $searchquery.'%')
                      ->orWhere('phone', 'LIKE', '%'.$searchquery);
            })
            ->where('active', '=', '1')
            ->get();