|
Программирование >> Руководство по sql
При использовании номеров в предложении ORDER BY нужно внимательно следить за изменениями в списке выбора. При добавлении или удалении столбцов из списка выбора результаты таких запросов могут измениться до неузнаваемости. Сортировка по заголовку выражения. Если в списке выбора выражение определено с заголовком, по нему можно выполнять сортировку. Фактически, благодаря этой возможности можно вообще отказаться от сортировки по позиции. В следующем примере, который как и предыдущий, приводит к аналогичным результатам, выражению price * ytd sales назначен заголовок income. Именно этот заголовок и используется в предложении ORDER BY вместо номера позиции в списке выбора. SQL: select pub id, price * ytd sales as income, price, title id from titles order by pub id, income desc Сортировка no выражению. В некоторых системах допускается выполнение сортировки по самому выражению из списка выбора, без использования его номера позиции или заголовка. Проверьте, допускается ли в ващей системе следующий запрос: SQL: select pub id, price * ytd sales, price, title id from titles order by pub id, price * ytd sales desc Как сортировать нулевые значения Не все системы одинаково упорядочивают нулевые значения. В стандарте SQL-92 определено, что при сортировке нулевых значений последние должны быть либо больше, либо меньше всех ненулевых значений. Как будет выполняться сортировка у вас - зависит от конкретной реализации. В Sybase SQL Server нули (NULL) считаются меньшими всех ненулевых значений, а в Sybase SQL Anywhere нулевые значения всегда выводятся в начале списка, независимо от порядка сортировки (по возрастанию или по убыванию). УСТРАНЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК: ПРЕДЛОЖЕНИЯ DISTINCT И ALL с помощью ключевых слов DISTINCT и ALL в списке выбора можно определить, что делать с повторяющимися строками результата. ALL возвращает все строки, удовлетворяющие условиям запроса (этот режим используется по умолчанию). DISTINCT возвращает только неповторяющиеся строки. Например, при поиске в таблице titleauthors всех идентификаторов авторов с использованием ключевого слова ALL получается следующий результат: SQL: select all au id from titleauthors Результат: au id 409-56-7008 486-29-1786 486-29-1786 712-45-1867 172-32-1176 213-46-8915 238-95-7766 213-46-8915 998-72-3567 899-46-2035 998-72-3567 722-51-5454 899-46-2035 807-91-6654 274-80-9391 427-17-2319 846-92-7186 756-30-7391 724-80-9391 724-80-9391 267-41-2394 672-71-3249 267-41-2394 472-27-2349 648-92-1872 Внимательно посмотрев на результаты запроса, можно обнаружить в нем повторяющиеся строки. С помощью ключевого слова DISTINCT их можно устранить. SQL: select distinct au id from titleauthors Результат: au id 172-32-1176 213-46-8915
Таким образом из результатов предыдущего запроса будут удалены щесть повторяющихся строк. Синтаксис предложения DISTINCT Основная форма предложения DISTINCT имеет следующий вид: SELECT [DISTINCT ALL] список выбора Ключевые слова DISTINCT и ALL можно использовать в запросе только один раз и они должны стоять в начале списка выбора. В следующем примере умыщ-ленно соверщена синтаксическая ощибка: SQL (неверно). select state, distinct city from authors Другими словами, нельзя выбрать все щтаты и при этом только неповторяющиеся города. Почувствуйте разницу! Если в списке выбора находится несколько элементов, при использовании ключевого слова DISTINCT выбираются только строки с уникальными комбинациями значений этих элементов. Рассмотрим следующий пример. Для начала получим список всех значений столбцов pub id и types из таблицы titles. SQL: select pub id, type from titles order by pub id Результат: pub id type 0736 psychology 0736 psychology
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |