栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mysql选择动态行值作为列名,另一列作为值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql选择动态行值作为列名,另一列作为值

与某些其他RDBMS不同,MySQL不原生支持 按设计 进行此类透视操作(开发人员认为它更适合应用程序的表示层而不是数据库层)。

如果您绝对必须在MySQL中执行此类操作,则构建一条准备好的语句是正确的方法-
尽管与其乱七八糟

CASE
,我可能只是使用MySQL的
GROUP_CONCAt()
函数:

SELECt CONCAt(  'SELECT `table`.id', GROUP_CONCAt('     ,    `t_', REPLACE(name, '`', '``'), '`.value         AS `', REPLACE(name, '`', '``'), '`'     SEPARATOR ''), ' FROM `table` ', GROUP_CONCAt('     LEFT JOIN `table`   AS `t_', REPLACe(name, '`', '``'), '` ON `table`.id = `t_', REPLACE(name, '`', '``'), '`.idAND `t_', REPLACE(name, '`', '``'), '`.name = ', QUOTE(name)     SEPARATOR ''), ' GROUP BY `table`.id') INTO @qry FROM (SELECt DISTINCT name FROM `table`) t;PREPARE stmt FROM @qry;EXECUTE stmt;

在sqlfiddle上看到它。

请注意,的结果

GROUP_CONCAt()
group_concat_max_len
变量限制(默认为1024字节:除非您有一些非常长的
name
值,否则此处不太可能相关)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/408117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号