我有一个表,它的搜索值可能位于两列之一,即 B 列和/或 C 列。我想根据 A 列生成一个摘要,显示所选搜索值(例如 x)出现在每个人的任一列。我想计算两列的总数。
+--------+------+----+
| name | B | C |
+--------+------+----+
| john | x | z |
| john | x | x |
| john | y | x |
| peter | x | z |
| peter | x | z |
| amanda | x | x |
| amanda | x | x |
| amanda | x | x |
| amanda | x | y |
| amanda | x | y |
+--------+-----------+
在上面的示例中,假设我的搜索值为 x,我想计算 x 在 B 列和/或 C 列中每个人出现的次数。我还想产生总计,并产生以下输出:
Name B C
john 2 2
peter 2 0
amanda 5 3
total 9 5
我可以像这样单独为每一列执行此操作:
SELECT name, COUNT(*) as count FROM table
WHERE A = 'x'
GROUP BY name
ORDER BY count DESC";
SELECT name, COUNT(*) as count FROM table
WHERE B = 'x'
GROUP BY name
ORDER BY count DESC";
然后我可以循环对每个输出进行单独的提取并将它们组合起来,但是我想知道是否有一种方法可以在一个 mysql 语句中对两列进行检查和计数?