简体   繁体   中英

MySQL conditional concatenate based on multiple columns

I'm stumped on a proper query to get an output based on multiple columns and the conditions in those columns:

   a  b  c
1  x     x
2  x  x  
3  x

I would like the results to output, based on where the x's are in columns a, b and c:

1 a,c
2 a,b
3 a

Is this possible to do in mysql? Much appreciated

You can use the CONCAT_WS function ( docs ) and some IF statements.

SELECT tn.ID,
CONCAT_WS(
  ',',
  IF(tn.a='x','a',null),
  IF(tn.b='x','b',null),
  IF(tn.c='x','c',null)
) as result
FROM TableName tn;

You can use IFNULL function for that ( docs ). For example:

SELECT a, IFNULL(b, c) FROM table_name;

It will select a for every case and conditionally b or c, depending on it's value (it have to be not null ). But I'm afraid you cannot do more than that.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM