我需要计算同一 ID 在不同列中成熟相同值的次数。 我将尝试用一个例子来澄清: 表格:
+-----+-----+-----+-----+-----+
| id | d01 | d02 | d03 | d04 |
+=====+=====+=====+=====+=====+
| 1 | A | A | B | B |
+-----+-----+-----+-----+-----+
| 2 | A | A | A | A |
+-----+-----+-----+-----+-----+
| 3 | B | B | A | A |
+-----+-----+-----+-----+-----+
| 4 | A | A | A | A |
+-----+-----+-----+-----+-----+
| 5 | A | A | A | A |
+-----+-----+-----+-----+-----+
| 6 | B | A | A | A |
+-----+-----+-----+-----+-----+
我需要知道值“B”对于任何人 (ID) 重复了多少次..
可以这样做吗? 结果
+-----+-----+-----+
| id | count B |
+=====+=====+=====+
| 1 | 2 |
+-----+-----+-----+
| 2 | 0 |
+-----+-----+-----+
| 3 | 2 |
+-----+-----+-----+
我正在考虑使用“SUM”函数,但我不知道如何仅显示单个 ID。 预先感谢,希望问题足够清楚!
最佳答案
如果只有四列:
SELECT id, (d01 = 'B') + (d02 = 'B') + (d03 = 'B') + (d04 = 'B')
FROM tablename
No there are 31 columns
这个问题可以通过两种方式解决:
- 对其他 27 列重复该条件:)
- 标准化您的结构,以便每个值都依赖于 ID 和代表日历的数值。
PHP 方式
您还可以获取所有列并让 PHP 为您解决这个问题:
$res = $db->query('SELECT * FROM tablename');
foreach ($res->fetchAll(PDO::FETCH_ASSOC) as $row) {
$id = $row['id'];
unset($row['id']); // don't count the id column
$count = count(array_keys($row, 'B', true));
printf("ID %d: %d\n", $id, $count);
}
关于php - 计算不同列中相同的值mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978485/