0

为了性能,我需要为 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”)

4

2 回答 2

1

这应该可以解决问题

SELECT 
SUBSTRING_INDEX(group_CONCAT(name) , ',', 2) as list , 
( if(count(*) > 2 , 1 , 0)) as more
 FROM 
   t 
 WHERE 
   qid=1
于 2009-10-03T21:26:23.803 回答
0

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

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

于 2009-10-03T17:49:56.420 回答