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 に答える