组根据行值

时间:2016-06-04 16:57:32

标签: mysql

我有一个包含多个字段名称的表,其行中的值可以是“no”/ Null /“yes”。现在我需要得到行值为“no”的所有字段的连接字段名称。

考虑我的表

id field1 field2 field3
1 no yes no
2 yes no no

然后我需要输出MySQL作为

id fields
1 field1,field3
2 field2,field3

有可能吗?

2 个答案:

答案 0 :(得分:0)

使用CONCAT_WS函数的解决方案(将返回仅包含值为'no'的字段的连接字符串):

SELECT 
    id, 
    CONCAT_WS(',',
              IF(`field1` = 'no', 'field1', null),
              IF(`field2` = 'no', 'field2', null),
              IF(`field3` = 'no', 'field3', null)
    ) AS fields
FROM  `your_table`
  

CONCAT_WS()不会跳过空字符串。但是,它会在分隔符参数后跳过任何 NULL 值。

http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_concat-ws

答案 1 :(得分:0)

以下查询完美地解决了我的问题。

选择     id,
    CONCAT_WS('&#39 ;,
              如果(field1 ='否',' field1',null),
              IF(field2 =' no',' field2',null),
              IF(field3 =' no',' field3',null)
    )AS领域
来自your_table
在哪里'没有' IN(field1,field2,field3);