0

如何CONCAT_WS在分组查询中使用?

这是我的数据库表:

项目

id(PK)  itemcode    req_id(FK)  qualifications  duties

我正在尝试运行此查询:

SELECT *,CONCAT_WS(' ',itemcode) itemcodes,COUNT(*) counter FROM items
    WHERE req_id=1 GROUP BY qualifications,duties

我希望输出是行加上itemcode空格分隔。说,如果有四行,我会得到:code1 code2 code3 code4itemcodes字段中。但是,它只返回一个项目代码。

示例数据库条目:

id  code    req_id  qualifications  duties
------------------------------------------------------
1   code12  1       can read        do the laundry
2   code24  1       can read        do the laundry
3   code35  1       can read        do the laundry
4   code47  1       can read        do the laundry
5   code98  1       can write       draw animals
6   code02  1       can write       draw animals
7   code53  2       can sing        sing all the time

期望的输出:

为了req_id=1

(*) itemcodes                       counter
-------------------------------------------
    code12 code24 code35 code47     4
    code98 code02                   2
4

1 回答 1

4

尝试这个:

SELECT qualifications, duties, GROUP_CONCAT(itemcode SEPARATOR ' ') AS itemcodes, COUNT(*) AS counter
FROM items
WHERE req_id = 1
GROUP BY qualifications, duties

GROUP_CONCAT用于对多行进行分组。它是一个聚合函数。

CONCAT_WS用于连接多个字符串,使用分隔符。所有字符串都必须作为参数传递,它不是聚合函数。

于 2013-10-19T19:55:44.750 回答