Mysql 返回满足sql中特定值的列名

Mysql 返回满足sql中特定值的列名,mysql,sql,Mysql,Sql,我有一个用户表,它在表本身中定义了“访问角色” 模式: UserID, UserName, Access_1, Access_2, Access_3, .... Access_10 此处Access_列的值为1或0 目标:我需要将用户及其允许的访问列为“允许访问” UserId, Access_Allowed 1, (Access_1, Access_3, Access_4, ...) 2, (Access_2, Access_3, Access_5, Access_1

我有一个用户表,它在表本身中定义了“访问角色”

模式:

UserID, UserName, Access_1, Access_2, Access_3, .... Access_10
此处Access_列的值为1或0

目标:我需要将用户及其允许的访问列为“允许访问”

UserId, Access_Allowed  
1,     (Access_1, Access_3, Access_4, ...)  
2,     (Access_2, Access_3, Access_5, Access_10, ...)
问候,

尤戈尔

1。请参阅规范化。感谢您的建议,我知道这里需要规范化,但我只坚持使用此模式(我不是确定的设计者),出于报告目的需要查询。您或您的组织完全没有义务使用关系数据库管理系统。然而,如果您要走这条路,那么提供关系数据是很有帮助的。和deisgner谈谈。在此期间,请参见CONCAT()
Thanks Strawberry... I've Used Concat_ws here...  

select userid, username,  
concat_ws(', ',  
IF(Access1 = 1 ,'Access1', NULL),  
IF(Access2 = 1 ,'Access2', NULL),  
IF(Access3 = 1 ,'Access3', NULL),  
IF(Access4 = 1 ,'Access4', NULL),  
.  
.  
IF( AccessN = 1 ,'AccessN',NULL) as Access_Allowed  
from UserTable

Thanks