我知道这个表结构太可怕了,我应该研究数据库规范化,但这是我现在必须要处理的。
我需要在列中找到最常见的数字 ,其中一个具有特定ID(在我的示例rollback()
中)。两列都从不具有相同的值。
3
SELECT Col1, Col2 FROM scores WHERE Col1 = 3 OR Col2 = 3
我希望得到这样的结果(我不需要计算3,因为它是ID,但它可以包括在内)
+------+------+
| Col1 | Col2 |
+------+------+
| 1 | 3 |
| 3 | 1 |
| 2 | 3 |
| 6 | 3 |
| 3 | 7 |
| 3 | 9 |
| 2 | 3 |
| 5 | 3 |
+------+------+
我尝试了一些诸如+-------+-------+
| Value | Count |
+-------+-------+
| 1 | 2 |
| 2 | 2 |
| 5 | 1 |
| 6 | 1 |
| 7 | 1 |
| 9 | 1 |
+-------+-------+
和嵌套UNION
之类的东西,但这似乎无法解决这个问题。
有什么建议吗?
答案 0 :(得分:2)
如果您想要对OTHER列为3的值进行计数,那么UNION
的工作方式如下:
SELECT value, theCount = COUNT(*)
FROM (
SELECT value = col1
FROM scores
WHERE col2 = 3
UNION ALL
SELECT col2
FROM scores
WHERE col1 = 3) T
GROUP BY value
ORDER BY value;
答案 1 :(得分:0)
一种方法是使用案例:
{{1}}