ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Спонсор статьи: Сервисный центр apple лучший в москве - apple сервисный центр москва www.islomal.ru.

Все о MySQL. Группировка результатов выборки


28-12-2009

MySQL позволяет разбивать записи результирующего набора на определенные группы на основании определенного атрибута. Для этой цели используется предложение GROUP BY. Так как каждая группа, созданная таким образом, представляется одной строкой (даже если она содержит несколько записей), эта возможность используется в первую очередь в случае многочисленных агрегатных функций MySQL.
Для того чтобы лучше это понять, рассмотрим следующий пример.
Листинг 9.51.
mysql> SELECT accountCreatedAt FROM accounts GROUP BY accountCreatedAt;
Группировка результатов выборки
В этом примере все попавшие в таблицу accounts записи были сгруппированы по полю accountCreatedAt. Так как все 11 записей таблицы содержат только 5 кодов штатов, MySQL создает 5 четких групп записей и представляет каждую группу одной строкой результирующего набора.
Случайный выбор
Комбинация ключевого слова LIMIT в сочетании с предложением ORDER BY и функцией RAND() дает возможность создания одного из наиболее популярных запросов из списков рассылки - выборки одной или более записей таблицы случайным образом. Этот процесс включает первую сортировку таблицы случайным образом, а затем выборку из результирующего набора одной записи. Или на жаргоне SQL: SELECT fld1, fld2 FROM tbl ORDER BY RAND() LIMIT 0, 1;
Теперь к записям, составляющим определенные отдельные группы, можно применять агрегатные функции. Например, следующий запрос возвращает суммарное число счетов по каждому штату.
Группировка результатов выборки
+-----+----------------------+
5 rows in set (0.05 sec)
После каждого имени поля в предложении GROUP BY могут быть добавлены ключевые слова ASC или DESC, позволяющие отсортировать результирующий набор в возрастающем или убывающем порядке соответственно. Следующий пример демонстрирует сортировку среднего остатка по счетам и по штатам в порядке, обратном алфавитному.
Группировка результатов выборки
Группы, созданные предложением GROUP BY можно еще более ограничить, добавив предложение HAVING, которое служит для той же цели, что и предложение WHERE, о котором речь шла ранее: для создания результирующего набора, соответствующего определенному условию. Рассмотрим примеры.
Группировка результатов выборки
Использование переменных
MySQL также позволяет сохранять результаты запросов SELECT в переменных, заданных пользователем, для использования в будущих запросах SELECT. Эти переменные хранятся на протяжении одного сеанса соединения, обеспечивая удобный и эффективный способ соединения запросов и использование результатов одного запроса в конструкциях другого. 
В чем разница между предложениями where и having
Различие между предложениями WHERE и HAVING заключается в том, что предложение WHERE обрабатывает все записи таблицы, выбирая только те, которые соответствуют указанному условию. Предложение HAVING обрабатывает записи после того, как они были выбраны из таблицы для еще более детальной обработки результирующего набора. Обычно предложение HAVING появляется вместе с предложениями GROUP BY, в то время как предложение WHERE - в операторах SELECT, DELETE и UPDATE.

Присвоение значений переменным осуществляется с помощью оператора " :=". В следующем примере показано присвоение самой ранней даты переменной ©oldest.
Группировка результатов выборки
Имена переменных чувствительны к регистру и могут содержать алфавитно-цифровые символы, символы подчеркивания "_" и точки ".". Эти переменные не различают типы данных. В переменной могут храниться строки или числа без необходимости предварительного объявления типа явным образом.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Выборка записей Все о MySQL. Использование подзапросов