试图找到一种方法将 CONCAT 与 IF 结合起来——或以其他方式在逗号分隔列表中显示设置标志的文本值。
注意:这最终适用于具有 10 列以上的表。在这里使用两个来简化。
假设我有一张带旗帜的桌子。如果标志是1
我想显示一些文本值,否则什么都没有。
origin:
+--+-----+-----+
|# | CHS | ACC |
+--+-----+-----+
|1 | 0 | 1 |
|2 | 1 | 1 |
|3 | 1 | 0 |
|4 | 0 | 0 |
+--+-----+-----+
我想:
+--+----------+
|# | origin |
+--+----------+
|1 | ACC |
|2 | CHS, ACC |
|3 | CHS |
|4 | |
+--+----------+
不是(这个或类似的):
+--+-----------+
|# | origin |
+--+-----------+
|1 | ACC, |
|2 | CHS, ACC, |
|3 | CHS, |
|4 | , |
+--+-----------+
朝着这个方向的东西:
SELECT
CONCAT_WS(', ',
IF(CHS = 0, '', 'CHS'),
IF(ACC = 0, '', 'ACC')
) as origin
FROM
origin;
但空值之间没有逗号。
这最终适用于一个包含 10 列的表,我根据 id 与其他表连接。