mysql concat列作为字符串传递

mysql concat列作为字符串传递

问题描述:

我需要连接列值,其中列名作为字符串传递。我有一位客户,谁拥有一个设计不当的MySQL表看起来像这样:mysql concat列作为字符串传递

------------------------------------------- 
| id | column_index | c1 | c2 | c3 | .... |c50| 

的Column_Index中字段以逗号分隔像C1,C5,C11和哪些列名称的字符串我想要做的是编写一个单一的select查询(没有存储过程等),只返回连接的列值,根据哪些列已被定义为索引。

事情是这样的:

SELECT id, column_index, CONCAT_WS(',' FOR col_name IN column_index) 

这是任何方式创建一个查询做类似的给它MySql的东西吗?

你的数据结构有些严重错误。也许你应该努力解决这个问题,而不是创建过于复杂的查询。

这就是说,以下是不漂亮,但应该工作:

select id, column_index, 
     concat_ws(',', 
       (case when find_in_set('c1', column_index) > 0 then c1 end), 
       (case when find_in_set('c2', column_index) > 0 then c2 end), 
       (case when find_in_set('c3', column_index) > 0 then c3 end), 
       . . . 
       ) as vals 
. . . 
+0

是否缺少一个'@colnames = Column_Index中,''ID,' – Uueerdo

+0

@Uueerdo后。 。 。我只是没有将'column_index'解释为列名。好奇的数据结构。 –

+0

我同意这种结构是严重错误的。但是,这是我客户的生产数据库,我只能读取访问权限,所以我无法修改它。这就是为什么我需要玩一个相应的SQL然后。 –