MYSQL查询 - 动态计算列中的值

时间:2013-05-23 14:11:44

标签: mysql

我想编写一个查询来获取一组结果。在这样做时,我希望能够保持特定字段中某个值的出现次数。我试图从设备表中提取部件号的记录,从表中提取各种部件号。

例如,这是我的结果集

CISCO1841
CISCO2610
CISCO2650 
CISCO2610
CISCO2650
CISCO2500

我应该跟踪

CISCO1841发生一次,CISCO2610发生两次,CISCO2650发生两次,CISCO2500发生一次。我需要存储此计数并根据此计数设置另一个列值。在MYSQL中有一种有效的方法吗?

2 个答案:

答案 0 :(得分:1)

分组您的查询并 COUNT() 结果:

SELECT myColumn, COUNT(*) FROM myTable GROUP BY myColumn

sqlfiddle上查看。

答案 1 :(得分:0)

您可以在插入数据的表格上使用trigger,并且该触发器将通过在单独的表格中更新每个单词的计数器(例如:CISCO2650)来计算出现次数。

或者你可以尝试下面的查询,但它不是动态的:

SELECT 
    SUM(IF(M_PART_NBR = 'CISCO2610',1,0)) as NBR1, 
    SUM(IF(M_PART_NBR = 'CISCO2811',1,0)) as NBR2,
    SUM(IF(M_PART_NBR = 'CISCO2911',1,0)) as NBR3
FROM 
    C2_INST_PRODUCT WHERE M_PART_NBR LIKE '%CISCO2%'