计算每个独特元素在`select`查询中出现的次数

时间:2014-04-25 05:32:26

标签: mysql sql select count

我有一个拥有数百万条记录的MySQL数据库,表格已编入索引。下面是表格结构。

enter image description here

我在表格中运行了以下代码。

SELECT `iwebs` FROM `wordstable` WHERE `iwebs` LIKE 'a1' or `iwebs` LIKE 'a2' or `iwebs` LIKE 'a3' or `iwebs` LIKE 'a4' or `iwebs` LIKE 'a5' or `iwebs` LIKE 'a6' or `iwebs` LIKE 'a7' or `iwebs` LIKE 'a8' or `iwebs` LIKE 'a9' or `iwebs` LIKE 'a10' 

现在此代码生成以下输出(显示输出的一小部分)。

enter image description here

但是,这不是我需要的。我需要的是一个键值对,它显示每个元素在结果中出现的次数。像

这样的东西
[a1,400]
[a2,100]
[a3,5]
[a5,500]
........

在上面的示例中,每个括号中的第一项表示单个元素出现在select查询中,第二项表示出现的次数。

换句话说,它意味着“a1在选择查询中出现400次”,“a2在选择查询中出现100次”,“a3在选择查询中出现5次”和“a5在选择查询中出现500次”等等上。

如何在SQL中执行此操作?

2 个答案:

答案 0 :(得分:2)

试试这个:

SELECT iwebs , COUNT(iwebs) FROM wordstable GROUP BY iwebs

针对具体要求进行编辑

SELECT iwebs , COUNT(iwebs) FROM wordstable  WHERE `iwebs` IN 

(' A1'' A2'' A3'' A4'' A5',& #39; a6',' a7',' a8',' a9',' a10')GROUP BY iwebs

答案 1 :(得分:1)

有一点想法,您应该能够将@Ilesh的解决方案与您的请求结合起来:

SELECT iwebs, COUNT(iwebs) FROM wordstable WHERE iwebs IN ('a1','a2','a3','a4') GROUP BY iwebs