2015-07-07 2 views
0

У меня есть группа записей, которые выглядят как следующие следующие условные результаты. Существует несколько случаев, когда число в столбце count повторяется. 'count' происходит от char_length (text_column). Я хочу захватить первую запись в каждой такой группе. Как мне это сделать?MySQL: выберите верхний результат в группе отдельных записей (char_length (text_column))

Я просмотрел документацию char_length() и искал примеры, где это было сделано, но ничего не может найти.

select distinct(char_length(text_column)), text_column from table 

.... как можно ближе к концу - что явно не близко - так как я смог добраться до результата.

=======+============================ 
count +  text_column 
=======+============================ 
2139 + some text entry 
-------+---------------------------- 
3000 + another sentence here 
-------+---------------------------- 
3000 + more text in this sentence 
-------+---------------------------- 
3000 + still more text here 
-------+---------------------------- 

Спасибо, BW

ответ

1

Там нет такого понятия, как «первый», если столбец не определяет порядок. Вы можете, однако, получить значение из неопределенном строки с помощью group by:

select char_length(text_column), text_column 
from table 
group by char_length(text_column); 

Я не большой поклонник с использованием расширения MySQL для group by где text_column допускается в select, но не group by. Однако, поскольку это длинный столбец, может быть более эффективным просто позволить MySQL выбрать значение, а не использовать фактическую функцию агрегации (например, min() или max()).

+0

Такой простой подход для решения моей проблемы. Он отлично работает - очень обязан. – brhelo

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