SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.04.2010 11:00:27

Usama Ben Laden
Участник
Зарегистрирован: 02.04.2010
Сообщений: 1

Запрос с сортировкой записей по их размеру

Необходимо сделать запрос к таблице БД, так, чтобы записи были упорядочены по суммарному размеру содержимого всех полей (по размеру записи). Это необходимо для того, чтобы можно было упорядочить записи по информативности, то есть чем больше заполненных полей (не NULL) тем они будут первее. В документации ничего не нашел. Я искал что-то вроде COUNT(*), то есть если бы была такая функция RECORD_SIZE(*), то запрос выглядел бы так:
SELECT * FROM mytable ORDER BY RECORD_SIZE(*) DESC;
То есть ключем сортировки выступает функция RECORD_SIZE(*), которая расчитывает общую длину всех полей,а СУБД, исходя из этого, сортирует их по убыванию. Не хочется писать хранимую процедуру, тупо складывавать размеры всех полей и вообще изобретать велосипед, поэтому спрашиваю как это сделать по-русски, может есть уже готовое решение?

Неактивен

 

#2 02.04.2010 11:53:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Запрос с сортировкой записей по их размеру

Хранимку писать не придется, а от тупо складывать никуда не денешься.
SELECT * FROM tablename ORDER BY length(col1)+length(col2)+... DESC;

С точки зрения быстродействия работать будет медленно. Лучше сделать доп поле, в котором хранить размер строки и по нему сортировать.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson