2009-10-03 6 views
0

Для выполнения, мне нужно, чтобы установить предел для GROUP_CONCAT,MySQL 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»)

+0

Я дал подробный example.Is ясно? – Misier

+0

Благодарим вас за предоставленный пример. Как вы хотите знать, когда список значений превышает ваш лимит? –

+0

@ rexem, есть много случаев с этим требованием. Если список значений превышает мой лимит, должен показать ссылку «Показать все». – Misier

ответ

0

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

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

+0

@ Lukáš Lalinský, извините за мое последнее уточнение! – Misier

1

это следует сделать трюк

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

Нет, это действительно «трюк», который больше работает, чтобы получить меньше, чего я не хочу. – Misier

+0

Ограничение в group_concat в данный момент не поддерживается, любое решение на основе запросов будет работать больше, чем простой вызов функции, подобный этому. –

+0

Это, вероятно, так близко, как вы можете получить, и относительно эффективно, если вы хотите получить заданный размер данных (например, точно определенное количество значений) из group_concat; но не так много, если вы хотите, чтобы он вел себя как предел. – Aea

Смежные вопросы