我目前正在研究MySQL,并且在组合数据方面遇到了麻烦。我不想在外层执行此操作。
基本上,我有一个项表。表结构如下所示:
=========================
id item_name stock
=========================
1 Soap 100
2 Plate 89
3 Scissor 72
=========================
我知道,我可以使用MySQL GROUP_CONCAT()
功能:
SELECT GROUP_CONCAT(item_name SEPARATOR ', ') AS items FROM item WHERE id IN (1, 2, 3);
结果:
======================
items
======================
Soap, Plate, Scissor
======================
但是,期望的结果是:
Soap (100), Plate (89), Scissor (72)
答案 0 :(得分:0)
使用GROUP BY
:
select item_name, count(*) from item group by item_name
您应该了解Aggregate
语句(count(*)
)并在SQL中进行分组:
答案 1 :(得分:0)
您也可以使用GROUP_CONCAT()
执行此操作,只需在汇总前构建item_name
和stock
中的每个元素:
SELECT GROUP_CONCAT(item_name, ' (', stock, ')' SEPARATOR ', ') AS items
FROM item
WHERE id IN (1, 2, 3);
一个鲜为人知的事实是GROUP_CONCAT()
需要多个参数。您也可以将其写为:
SELECT GROUP_CONCAT(CONCAT(item_name, ' (', stock, ')') SEPARATOR ', '
) AS items
FROM item
WHERE id IN (1, 2, 3);