Пример предложения SQL WITH

Возможный дубликат:
Разница между CTE и SubQuery?

Я пытался понять, как использовать WITH пункт и цель WITH пункт.

Все, что я понял, было WITH предложение было заменой для обычных подзапросов.

Может кто-нибудь объяснить это мне с небольшим примером в деталях?

2 ответа

Предложение SQL WITH было введено Oracle в базе данных Oracle 9i выпуск 2. Предложение SQL WITH позволяет дать блоку подзапроса имя (процесс, также называемый рефакторингом подзапроса), на которое можно ссылаться в нескольких местах основного SQL-запроса. Имя, присвоенное подзапросу, обрабатывается так, как если бы оно было встроенным представлением или таблицей. Предложение SQL WITH по сути является заменой обычному подзапросу.

Синтаксис для предложения SQL WITH

Ниже приводится синтаксис предложения SQL WITH при использовании одного псевдонима подзапроса.

WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]

При использовании нескольких псевдонимов подзапроса синтаксис выглядит следующим образом.

WITH <alias_name_A> AS (sql_subquery_statement),
<alias_name_B> AS(sql_subquery_statement_from_alias_name_A
or sql_subquery_statement )
SELECT <column_list>
FROM <alias_name_A>, <alias_name_B> [,table_names]
[WHERE <join_condition>]

В приведенной выше документации по синтаксису alias_name является значимым именем, которое вы дадите подзапросу после предложения AS. Каждый подзапрос должен быть отделен запятым Примером для оператора WITH. Остальные запросы следуют стандартным форматам для простых и сложных запросов SQL SELECT.

Для получения дополнительной информации: http://www.brighthub.com/internet/web-development/articles/91893.aspx

Это было полностью отвечено здесь.

Посмотрите документы Oracle по SELECT, чтобы увидеть, как работает факторинг подзапроса, и пример Марка:

WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = 'M'
Другие вопросы по тегам