MySQL GROUP_CONCAT头疼

时间:2009-10-03 17:43:19

标签: sql mysql group-concat

为了提高性能,我需要为GROUP_CONCAT设置限制,

我需要知道是否包含行。

怎么做?

修改

让我提供一个人为的例子:

create table t(qid integer unsigned,name varchar(30));

insert into t value(1,'test1');    
insert into t value(1,'test2');    
insert into t value(1,'test3');

select group_concat(name separator ',') 
  from t 
 where qid=1;

+----------------------------------+
| group_concat(name separator ',') |
+----------------------------------+
| test1,test2,test3                |
+----------------------------------+

但是现在,我想最多分组2个条目,并且需要知道结果中是否包含一些条目:

+----------------------------------+
| group_concat(name separator ',') |
+----------------------------------+
| test1,test2                      |
+----------------------------------+

我需要知道还有另一个条目(在这种情况下是“test3”)

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题

SELECT 
SUBSTRING_INDEX(group_CONCAT(name) , ',', 2) as list , 
( if(count(*) > 2 , 1 , 0)) as more
 FROM 
   t 
 WHERE 
   qid=1

答案 1 :(得分:0)

你打算如何设定限制?它将解决哪些性能问题?

您可以使用count(*)获取组中的行数,并将其与限制进行比较。