2015-09-04 2 views
1

Мой запрос выглядит следующим образом:GROUP_CONCAT() отсекает некоторые строки

select id, value from X where sig_id=1; 

-> получает около 1000 строк;

Но когда я использую,

select id, 
round(SUBSTRING_INDEX(group_concat(if(sig_id =1, value,0) order by sig_value desc),',',1),2) 
from X; 

-> получает только 1 строку;

I also get a warning, 

Row 74 was cut by GROUP_CONCAT() 

Как это можно решить?

+0

Легко. Не используйте GROUP_CONCAT. К моему способу мышления в SQL нет (почти) проблем, для которых GROUP_CONCAT является решением – Strawberry

ответ

1

Как я вижу, в вашем нижнем запросе вы делаете GROUP_CONCAT() без каких-либо GROUP BY, и поэтому группировка выполняется по всему набору результатов как одна группа. Таким образом, получается только одна запись.

select id, 
round(SUBSTRING_INDEX(group_concat(if(sig_id =1, value,0) order by sig_value desc),',',1),2) 
from X; 

Вы можете на самом деле хотите использовать GROUP BY на какой колонке говорят id колонку, чтобы получить несколько результатов группирования.

+0

Да Спасибо. Мой плохой ... Я пропустил это. – haimen

+0

По какой-то причине я не смог принять свой ответ до сих пор. Теперь Юсу удалось это сделать. сделал это :) – haimen

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