我有一个包含多个字段名称的表,其行中的值可以是“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
有可能吗?
答案 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);