连接多个MySQL列和行

时间:2016-03-25 10:37:36

标签: mysql sql

我目前正在研究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)

2 个答案:

答案 0 :(得分:0)

使用GROUP BY

select item_name, count(*) from item group by item_name

您应该了解Aggregate语句(count(*))并在SQL中进行分组:

http://www.w3schools.com/sql/sql_groupby.asp

答案 1 :(得分:0)

您也可以使用GROUP_CONCAT()执行此操作,只需在汇总前构建item_namestock中的每个元素:

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);