mysql/在不在列中的集合中查找值

gfttwv5a  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(183)

我有一些数据,其中包含一个逗号分隔的列表和三列。我想找到的是列表中存在的值,而不是任何列中的值。
数据:

+-------+-------+--------+-----------------+
| col_a | col_b | col_c  | list            |
+-------+-------+--------+-----------------+
| red   | NULL  | green  | yellow,blue     |
| red   | blue  | green  | red,blue,green  |
| red   | NULL  | yellow | green           |
| blue  | white | green  | red,white,green |
| NULL  | NULL  | NULL   | red,blue,green  |
+-------+-------+--------+-----------------+

期望输出:

+-------+-------+--------+-----------------+----------------+
| col_a | col_b | col_c  | list            | unmatched      |
+-------+-------+--------+-----------------+----------------+
| red   | NULL  | green  | yellow,blue     | yellow,blue    |
| red   | blue  | green  | red,blue,green  |                |
| red   | NULL  | yellow | green           | green          |
| blue  | white | green  | red,white,green | red            |
| NULL  | NULL  | NULL   | red,blue,green  | red,blue,green |
+-------+-------+--------+-----------------+----------------+

目前我有一个查询,但很难看:

SELECT *,
TRIM(
    BOTH ',' FROM 
    REPLACE(
        REPLACE(
            REPLACE(
                REPLACE(
                    LIST,
                    IFNULL(col_a,''),
                    ''
                ),
                IFNULL(col_b,''),
                ''
            ),
            IFNULL(col_c,'')
            ,''
        ),
        ',,',
        ','
    )
) AS unmatched
FROM color_list

有没有更干净的方法找到 unmatched 价值观?我在这里做的事情真的很难衡量,感觉相当尴尬和脆弱。
这是一把小提琴。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题