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

时间:2013-10-19 19:46:27

标签: mysql sql

如何在分组查询中使用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 code4字段中获得itemcodes。但是,它只返回一个项目代码。

示例数据库条目:

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

1 个答案:

答案 0 :(得分: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 用于使用分隔符连接多个字符串。所有字符串必须作为参数传递,不是聚合函数。