Вывод записей в случайном порядке. Ограничение выборки. Вывод уникальных значений. Объединение таблиц

Вывод записей в случайном порядке

Для вывода записей в случайном порядке используется конструкция ORDER BY RAND(). Рассмотрим пример, где демонстрируется вывод содержимого таблицы catalogs в случайном порядке.

Вывод содержимого таблицы с случайном порядке

Вывод содержимого таблицы с случайном порядке

Если требуется вывести лишь одну случайную запись, используется конструкция LIMIT 1.

Вывод одной случайной записи

Вывод одной случайной записи

Ограничение выборки

Результат выборки может содержать сотни и тысячи записей. Их вывод и обработка занимают значительное время и серьезно загружают сервер базы данных, поэтому информацию часто разбивают на страницы и предоставляют ее пользователю порциями. Извлечение только части запроса требует меньше времени и вычислений, кроме того, пользователю часто бывает достаточно просмотреть первые несколько записей. Постраничная навигация используется при помощи ключевого слова LIMIT, за которым следует количество записей, выводимых за один раз. Рассмотрим пример, где извлекаются первые две записи таблицы catalogs, при этом осуществляется их обратная сортировка по полю id_catalog.

Использование ключевого слова LIMIT

Использование ключевого слова LIMIT

Для того, чтобы извлечь следующие две записи, используется ключевое слово LIMIT с двумя числами: первое указывает позицию, начиная с которой необходимо вернуть результат, а второе — количество извлекаемых записей.

Извлечение записей, начиная со второй позиции

Извлечение записей, начиная со второй позиции

Для извлечения следующих двух записей необходимо использовать конструкцию LIMIT 4, 2.

Вывод уникальных значений

Очень часто встает задача выбора из таблицы уникальных значений. Для этого воспользуемся таблицей tbl. Пусть требуется вывести все значения поля id_catalog.

Выборка значений поля id_catalog из таблицы tbl

Выборка значений поля id_catalog из таблицы tbl

Как видно, результат не совсем удобен для восприятия. Было бы лучше, если бы запрос вернул уникальные значения столбца id_catalog. Для этого перед именем столбца можно использовать ключевое слово DISTINCT, которое предписывает MySQL извлекать только уникальные значения.

Примечание. Ключевое слово DISTINCT имеет синоним DISTINCTROW.

Выборка уникальных значений

Выборка уникальных значений

Результат запроса не имеет ни одного повторяющегося значения.

Для ключевого слова DISTINCT имеется противоположное слово ALL, которое предписывает извлечение всех значений столбца, в том числе и повторяющихся. Поскольку такое поведение установлено по умолчанию, ключевое слово ALL часто опускают.

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

Примечание. Конструкция GROUP BY располагается в SELECT-запросе перед конструкциями ORDER BY и LIMIT.

Использование конструкции GROUP BY

Использование конструкции GROUP BY

Объединение таблиц

Как мы уже знаем, оператор SELECT возвращает результат в виде таблицы. Если формат результирующих таблиц (число, порядок следования и тип столбцов) совпадает, то возможно объединение результатов выполнения двух операторов SELECT в одну результирующую таблицу. Это достигается использованием оператора UNION. Для примера воспользуемся ранее созданными таблицами catalogs и tb3. Подгоним структуру таблицы tb3 под таблицу catalogs и заполним ее содержимым.

Таблица tb3

Таблица tb3

Таблица tb3

Таблица catalogs

Таблица catalogs

Объединим результаты этих таблиц, соединив два запроса SELECT при помощи ключевого слова UNION.

Использование ключевого слова UNION

Использование ключевого слова UNION

Во втором запросе SELECT, производящем выборку из таблицы tb3, к значению первичного ключа id добавляется значение 3, и таким образом, всезначения в результирующей таблице становятся уникальными. Если результирующая таблица содержит повторяющиеся строки, СУБД MySQL автоматически отбрасывает дубликаты. Изменить поведение по умолчанию можно при помощи ключевого слова ALL, которое добавляется после оператора UNION. Использование оператора UNION ALL требует, чтобы возвращались все строки результирующих таблиц.

Использование ключевого слова UNION ALL

Использование ключевого слова UNION ALL

назадвверхвперед
Rambler's Top100