首页 > 解决方案 > MySQL如何计算包含指定列值的列

问题描述

我有桌子 xyz

ID    day1    day2    day3    day4
1     A         A       P       P
2     A         A       A       P
3     A         A       A       A
4     A         P       P       P

我希望能够查询它并返回 ID 以及在该行中以 A 作为其值的列数。所以结果看起来像这样:

ID    Count
 1     2
 2     3
 3     4
 4     1

标签: mysql

解决方案


这是您可以使用的涉及字符串连接的技巧:

SELECT
    ID,
    CHAR_LENGTH(CONCAT(day1, day2, day3, day4)) -
    CHAR_LENGTH(REPLACE(CONCAT(day1, day2, day3, day4), 'A', '')) AS Count
FROM yourTable
ORDER BY ID;

在此处输入图像描述

演示

如果您还想计算其他字母,只需复制我对字母的逻辑A,例如L我们可以尝试:

CHAR_LENGTH(CONCAT(day1, day2, day3, day4)) -
CHAR_LENGTH(REPLACE(CONCAT(day1, day2, day3, day4), 'L', ''))

推荐阅读