用于计算集合列中的值的SQL查询

时间:2011-07-11 00:36:33

标签: sql set grouping

我不知道这是否可以通过一个查询,但这里是:

我有一个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
    )
)

2 个答案:

答案 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;