mysql sql设置值_mysql – 在SQL查询结果中将列值设置为列名
我想读一个表,其中的值将是sql查询结果的列名.例如,我有table1作为..idcol1col2----------------------0nameax0name2bx0name3cx1namedx1name2ex1name2fx如果您看到id = 0,则name的...
我想读一个表,其中的值将是sql查询结果的列名.
例如,我有table1作为..
id col1 col2
----------------------
0 name ax
0 name2 bx
0 name3 cx
1 name dx
1 name2 ex
1 name2 fx
如果您看到id = 0,则name的值为ax,名称为2 – bx,name3 = cx
而不是这是行,更容易将列显示为id,name,name2,name3
现在我希望查询的结果看起来像这样
id name name2 name3
0 ax bx cx
1 dx ex fx
有人可以帮我实现这个目标吗?
解决方法:
这是通过数据透视表完成的.按id分组,为要在列中捕获的每个值发出CASE语句,并使用类似MAX()聚合的方法来消除空值并向下折叠到一行.
SELECT
id,
/* if col1 matches the name string of this CASE, return col2, otherwise return NULL */
/* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */
MAX(CASE WHEN (col1 = 'name') THEN col2 ELSE NULL END) AS name,
MAX(CASE WHEN (col1 = 'name2') THEN col2 ELSE NULL END) AS name2,
MAX(CASE WHEN (col1 = 'name3') THEN col2 ELSE NULL END) AS name3
FROM
yourtable
GROUP BY id
ORDER BY id
注意:这仅适用于col1的有限且已知数量的可能值.如果可能值的数量未知,则需要在循环中动态构建SQL语句.
标签:sql,mysql,pivot
来源: https://codeday.me/bug/20190918/1810987.html
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)