×
Мы обрабатываем cookies, чтобы сделать наш сайт удобнее и персонализированнее для вас. Подробнее: политика использования «cookies» и «политики конфиденциальности».

Для самостоятельной настройки ознакомьтесь с инструкцией

Дополнительные настройки cookies в браузерах

Файлы cookie автоматически загружаются в ваш браузер при посещении веб-сайта. У вас есть возможность управлять этими файлами. Если Вы не согласны с использованием файлов cookies, запретите их сохранение на своём устройстве, удалите уже имеющиеся файлы cookies через настройки браузера или прекратите использование сайта.

При отключении обработки cookie наш сайт продолжит функционировать, однако будут использоваться исключительно необходимые технические файлы, без которых работа ресурса невозможна.

Инструкция по отключению cookies
Принять
Настроить
Отклонить

ДОКУМЕНТАЦИЯ

Выберите версию, форк и язык для СУБД Digital Q.DataBase, чтобы прочитать или скачать всю документацию.
Техподдержка
Документация
Диасофт
Авторские права © 2016–2025 ООО "Диасофт Экосистема"
Скачать всю документацию:

2.4.3. Списки выбора

2.4.3.1. Элементы списка выбора
2.4.3.2. Заголовки столбцов
2.4.3.3. DISTINCT

Как было показано в предыдущем разделе, табличное выражение в SELECT команде формирует промежуточную виртуальную таблицу путем возможного объединения таблиц и представлений, фильтрации строк, группировки и т. д. Эта таблица затем передается для обработки список выбора. Список выбора определяет, какие столбцы промежуточной таблицы будут фактически выведены.

2.4.3.1. Элементы списка выбора #

Простейшим видом списка выбора является * который выводит все столбцы, сформированные табличным выражением. В противном случае список выбора представляет собой разделенный запятыми список выражений со значениями (как определено в Раздел 2.1.2). Например, это может быть список имен столбцов:

SELECT a, b, c FROM ...

Имена столбцов a, b, и c представляют собой либо фактические имена столбцов таблиц, указанных в предложении FROM предложения или через назначенные им псевдонимы, как описано в Раздел 2.4.2.1.2. Пространство имен, доступное в списке выбора, совпадает с пространством имен в WHERE предложении, если только не используется группировка; в этом случае оно совпадает с тем, что указано в HAVING предложения.

Если несколько таблиц содержат столбцы с одинаковыми именами, необходимо также указывать имя таблицы, например:

SELECT tbl1.a, tbl2.a, tbl1.b FROM ...

При работе с несколькими таблицами также может быть полезно извлечь все столбцы конкретной таблицы:

SELECT tbl1.*, tbl2.a FROM ...

См. Раздел 2.5.16.5 для получения дополнительных сведений о table_name.* синтаксисе.

Если в списке выбора используется произвольное выражение значения, оно концептуально добавляет в результирующую таблицу новый виртуальный столбец. Выражение значения вычисляется один раз для каждой результирующей строки, при этом вместо ссылок на столбцы подставляются значения текущей строки. Однако выражения в списке выбора не обязательно должны ссылаться на какие-либо столбцы в табличном выражении FROM предложения; они могут быть, например, константными арифметическими выражениями.

2.4.3.2. Заголовки столбцов #

Элементам в списке выбора можно присваивать имена для последующей обработки, например для использования в ORDER BY предложении или для отображения в клиентском приложении. Например:

SELECT a AS value, b + c AS sum FROM ...

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

AS ключевое слово обычно является необязательным, но в некоторых случаях, когда желаемое имя столбца совпадает с Digital Q.DataBase ключевым словом, необходимо добавить AS или заключить имя столбца в двойные кавычки, чтобы избежать двусмысленности. (Приложение 8.3 показывает, какие ключевые слова требуют AS использования в качестве заголовка столбца.) Например, FROM является одним из таких ключевых слов, поэтому следующий вариант не работает:

SELECT a from, b + c AS сумма FROM ...

но любой из этих вариантов допустим:

SELECT a AS from, b + c AS сумма FROM ...
SELECT a "from", b + c AS сумма FROM ...

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

Примечание

Присвоение имен выходным столбцам здесь отличается от того, как это делается в предложении FROM предложение (см. Раздел 2.4.2.1.2). Можно переименовать один и тот же столбец дважды, но в итоге будет использовано имя, назначенное в списке выбора.

2.4.3.3. DISTINCT #

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

SELECT DISTINCT select_list ...

(Вместо этого DISTINCT ключевое слово ALL может использоваться для задания поведения по умолчанию, при котором сохраняются все строки.)

Очевидно, что две строки считаются различными, если они отличаются значением хотя бы в одном столбце. При таком сравнении значения NULL считаются равными.

В качестве альтернативы для определения того, какие строки следует считать различными, можно использовать произвольное выражение:

SELECT DISTINCT ON (выражение [, выражение ...]) select_list ...

Здесь выражение представляет собой произвольное выражение значения, вычисляемое для всех строк. Набор строк, для которых значения всех выражений совпадают, считается дубликатами, и в выходном результате сохраняется только первая строка набора. Обратите внимание, что «первая строка» набора является непредсказуемой, если запрос не отсортирован по достаточному количеству столбцов, чтобы гарантировать однозначный порядок строк, поступающих на DISTINCT фильтр. (DISTINCT ON обработка выполняется после ORDER BY сортировки.)

DISTINCT ON предложение не входит в стандарт SQL и иногда считается плохим стилем из-за потенциально неопределенного характера его результатов. При разумном использовании GROUP BY и подзапросов в FROM, этой конструкции можно избежать, но она часто оказывается наиболее удобной альтернативой.

Наверх
свяжитесь
с нами
контакты
Для прямой связи с нами вы можете использовать контакты ниже, либо оставить заявку через форму обратной связи, и мы обязательно свяжемся с вами

*поля обязательные к заполнению