2015-09-04 86 views
1

我的查询如下:GROUP_CONCAT()削减某些行

select id, value from X where sig_id=1; 

- >取近1000行;

但是当我使用,

select id, 
round(SUBSTRING_INDEX(group_concat(if(sig_id =1, value,0) order by sig_value desc),',',1),2) 
from X; 

- >只获取1列;

I also get a warning, 

Row 74 was cut by GROUP_CONCAT() 

这怎么解决?

+0

简单。不要使用GROUP_CONCAT。以我的想法,在GROUP_CONCAT是解决方案的SQL中几乎没有问题 – Strawberry

回答

1

依我之见,在下面的查询你正在做一个GROUP_CONCAT()没有任何GROUP BY等分组是在整个结果做作为一个组。因此,导致只有一个记录。

select id, 
round(SUBSTRING_INDEX(group_concat(if(sig_id =1, value,0) order by sig_value desc),',',1),2) 
from X; 

你可能真的想使用GROUP BY一些列说id柱获得多重分组结果。

+0

是的谢谢。我的坏...我错过了。 – haimen

+0

由于某种原因,我直到现在还不能接受我的答案。现在Jus能够做到这一点。做到了 :) – haimen