mysql中的输出,mysql-将输出结果作为SQL中的列

我的桌子看起来像这样.

+---------+---------------------

| ELEMENT_NAME | ELEMENT_VALUE |

+--------------+---------------+

| NAME | NAME1 |

| Address | Address1 |

| City | City1 |

| NAME | NAME2 |

| Address | Address2 |

| City | City1 |

+-------------------------------

我需要这样的输出

+---------+---------------------

| NAME |Address | City |

+--------------+---------------+

| NAME1 | Address1 | City1 |

| NAME2 | Address2 | City2 |

+-------------------------------

注意:-名称,地址,城市仅是示例.可以是任何东西

有人可以帮我吗?

解决方法:

您可以为此使用GROUP_CONCAT():

SELECT ID

,GROUP_CONCAT(CASE WHEN ELEMENT_NAME = 'NAME'

THEN ELEMENT_VALUE ELSE NULL END) AS `NAME`

,GROUP_CONCAT(CASE WHEN ELEMENT_NAME = 'Address'

THEN ELEMENT_VALUE ELSE NULL END) AS `Address`

,GROUP_CONCAT(CASE WHEN ELEMENT_NAME = 'City'

THEN ELEMENT_VALUE ELSE NULL END) AS `City`

FROM Table1

GROUP BY ID;

动态查询(如果您不知道ELEMENT_NAME的数目或太多ELEMENT_NAME):

SET @sql = NULL;

SELECT

GROUP_CONCAT(DISTINCT

CONCAT(

'GROUP_CONCAT(CASE WHEN `ELEMENT_NAME` = ''',

`ELEMENT_NAME`,

''' THEN ELEMENT_VALUE ELSE NULL END) AS `',

`ELEMENT_NAME`, '`'

)

) INTO @sql

FROM Table1;

SET @sql = CONCAT('SELECT ID, ', @sql,'

FROM Table1

GROUP BY ID

');

PREPARE stmt FROM @sql;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

输出:

| ID | NAME | ADDRESS | CITY |

---------------------------------

| 1 | NAME1 | Address1 | City1 |

| 2 | NAME2 | Address2 | City1 |

标签:pivot,sql,mysql

来源: https://codeday.me/bug/20191122/2063628.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值