2012-11-23 27 views
1

我有一个字段命名为“的ColorCode”在具有类似这样的数字一个MySQL表:如何按MySQL中字段值的最后一项进行分组?

28373 GYY green 
23423 HH red 
23423 HH green 
2343 QWE red  
SKDJF blue 
green 

会是怎样的SQL语句来显示有多少每种颜色的occurances,像这样PHP影响的伪代码:

SELECT COUNT(*) FROM products GROUP BY END(EXPLODE(ColorCode)); 
+0

我希望你不会有很多的记录。 –

+0

这只是一次性查询,所以此时性能并不重要。 –

回答

4

的fugly,但这样的事情

group by RIGHT(ColorCode, LOCATE(' ', REVERSE(ColorCode)) 

如果你经常运行此查询,绝对求索r将这个'最后'值分解到它自己的字段中,这样你至少可以对它进行索引。在大桌子上表现会很糟糕。

1

如何:

GROUP BY SUBSTRING_INDEX(ColorCode,' ',-1); 

这并不适用于您的最后一个例子的工作,虽然。

显然它确实也适用于你的最后一个例子! :d

这里是一个演示:http://sqlfiddle.com/#!2/d41d8/4088

+0

'SUBSTRING_INDEX('green','',-1)=='green'' –

+0

@Jack是的,我刚刚发现了这个,谢谢! –

相关问题