我不知道这是否可以通过一个查询,但这里是:
我有一个set数据类型的列。我想选择集合中每个可能值的计数。所以我有:
第1行设置列值:'opt 1','opt 2'
第2行设置列值:'opt 1','opt 3'
第3行设置列值:'opt 3','opt 4','opt 2'
我需要一个会产生类似结构的查询(并不一定就是这个,只是该集合的每个可能值的计数):
Array(
[0] => Array(
'value'=>'opt 1',
'count'=> 2
),
[1] => Array(
'value'=>'opt 2',
'count' => 2
),
[2] => Array(
'value'=>'opt 3',
'count' => 2
),
[3] => Array(
'value'=>'opt 4',
'count' => 1
)
)
答案 0 :(得分:2)
由于您的SET列是位图,您可以设置如下查询:
SELECT count(NULLIF(columnName & 1,0)) as Count1stVal,
count(NULLIF(columnName & 2,0)) as Count2ndVal,
count(NULLIF(columnName & 4,0)) as Count3rdVal,
count(NULLIF(columnName & 8,0)) as Count4thVal,
...
答案 1 :(得分:0)
也许我完全不理解这个问题,但是如果你建议一个包含值的列的表,并且你希望你的查询输出两列,一列是值,第二列是数量表中出现的值为:
SELECT column, count(column)
FROM table
GROUP BY column
ORDER BY column;