我有一个非规范化表,我必须在其中计算其他列中相同值的数量。 我正在使用 InfiniDB Mysql 存储引擎。
这是我的 table :
col1 | col2 | col3
------------------
A | B | B
A | B | C
A | A | A
这就是我所期望的:
col1Values | col2Values | col3Values
------------------------------------
1 | 2 | 2 -- Because B is in Col2 and Col3
1 | 1 | 1
3 | 3 | 3
有没有类似的东西
-- function count_values(needle, haystack1, ...haystackN)
select count_values(col1, col1, col2, col3) as col1values -- col1 is needle
, count_values(col2, col1, col2, col3) as col2values -- col2 is needle
, count_values(col3, col1, col2, col3) as col3values -- col3 is needle
from table
还是我错过了一些可以解决问题的简单方法? :-)
提前致谢
罗马
最佳答案
select
CASE WHEN col1 = col2 and col1=col3 THEN '3'
WHEN col1 = col2 or col1=col3 THEN '2'
WHEN col1 != col2 and col1!=col3 THEN '1'
ELSE '0' END AS col1_values,
CASE WHEN col2 = col1 and col2=col3 THEN '3'
WHEN col2 = col1 or col2=col3 THEN '2'
WHEN col2 != col1 and col2!=col3 THEN '1'
ELSE '0' END AS col2_values,
CASE WHEN col3 = col1 and col3=col2 THEN '3'
WHEN col3 = col1 or col3=col2 THEN '2'
WHEN col3 != col1 and col3!=col2 THEN '1'
ELSE '0' END AS col3_values
FROM table_name
关于mysql - 计算一行中重复的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912183/