如何在分组查询中使用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
答案 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
用于使用分隔符连接多个字符串。所有字符串必须作为参数传递,不是聚合函数。