MySQL GROUP_CONCAT головная боль - PullRequest
       8

MySQL GROUP_CONCAT головная боль

0 голосов
/ 03 октября 2009

Для производительности мне нужно установить предел для GROUP_CONCAT,

и мне нужно знать, есть ли строки, не включенные.

Как это сделать?

EDIT

Позвольте мне привести надуманный пример:

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 ]

1 голос
/ 04 октября 2009

это должно сработать

SELECT 
SUBSTRING_INDEX(group_CONCAT(name) , ',', 2) as list , 
( if(count(*) > 2 , 1 , 0)) as more
 FROM 
   t 
 WHERE 
   qid=1
0 голосов
/ 03 октября 2009

Как вы собираетесь установить лимит? И какие проблемы с производительностью это решит?

Вы можете получить количество строк в группе, используя count(*), и сравнить его с пределом.

...