Вопросы с тегом «common-table-expression»

Общее табличное выражение (CTE) - это временный набор результатов, который определяется в пределах области выполнения одного оператора SELECT, INSERT, UPDATE, DELETE или CREATE VIEW.

230
Когда использовать Common Table Expression (CTE)

Я начал читать о Common Table Expression и не могу вспомнить случай использования, когда мне нужно было бы их использовать. Они кажутся избыточными, как то же самое можно сделать с производными таблицами. Я что-то упускаю или плохо понимаю? Может ли кто-нибудь дать мне простой пример ограничений с...

222
Есть ли разница в производительности между CTE, подзапросом, временной таблицей или переменной таблицы?

В этом превосходном вопросе SO различия между CTEи sub-queriesбыли обсуждены. Я хотел бы специально спросить: При каких обстоятельствах каждое из следующих действий более эффективно / быстрее? КТР Sub-запросы Временный стол Переменная таблицы Традиционно я использовал много temp tablesв разработке...

165
Как создать временную таблицу с помощью SELECT * INTO tempTable ОТ CTE Query

У меня есть запрос MS SQL CTE, из которого я хочу создать временную таблицу. Я не уверен, как это сделать, поскольку это дает Invalid Object nameошибку. Ниже весь запрос для справки SELECT * INTO TEMPBLOCKEDDATES FROM ;with Calendar as ( select EventID, EventTitle, EventStartDate, EventEndDate,...

157
Сочетание INSERT INTO и WITH / CTE

У меня очень сложное CTE, и я хотел бы вставить результат в физическую таблицу. Является ли следующее действительным? INSERT INTO dbo.prf_BatchItemAdditionalAPartyNos ( BatchID, AccountNo, APartyNo, SourceRowID ) WITH tab ( -- some query ) SELECT * FROM tab Я думаю об использовании функции для...

156
Сохраняя это простым и как сделать несколько CTE в запросе

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

148
Разница между CTE и SubQuery?

Из этого сообщения Как использовать ROW_NUMBER в следующей процедуре? Есть две версии ответов, в которых одна использует a, sub-queryа другая - CTEдля решения той же проблемы. Итак, в чем преимущество использования CTE (Common Table Expression)«подзапроса» (таким образом, более читабельно, что на...

136
Максимальная рекурсия 100 была исчерпана до завершения оператора

Я продолжаю получать max recursion errorс этим запросом. Сначала я думал, что это потому, что возвращается ноль, а затем он пытается сопоставить нулевые значения, вызывающие ошибку, однако я переписал свой запрос, чтобы нули не возвращались, и ошибка все еще возникает. Что было бы лучшим способом...

112
Как вы используете предложение «WITH» в MySQL?

Я конвертирую все свои запросы SQL Server в MySQL, и все мои запросы, содержащиеся WITHв них, не работают. Вот пример: WITH t1 AS ( SELECT article.*, userinfo.*, category.* FROM question INNER JOIN userinfo ON userinfo.user_userid = article.article_ownerid INNER JOIN category ON...

109
SQL Server CTE и пример рекурсии

Я никогда не использую CTE с рекурсией. Я как раз читал об этом статью. В этой статье показана информация о сотрудниках с помощью CTE и рекурсии сервера Sql. В основном это показывает информацию о сотрудниках и их менеджерах. Я не могу понять, как работает этот запрос. Вот запрос: WITH cteReports...

98
Предложение MySQL «WITH»

Я пытаюсь использовать MySQL для создания представления с предложением "WITH" WITH authorRating(aname, rating) AS SELECT aname, AVG(quantity) FROM book GROUP BY aname Но похоже, что MySQL не поддерживает это. Я думал, что это довольно стандартно, и я уверен, что Oracle поддерживает это. Есть ли...

96
Как использовать несколько операторов WITH в одном запросе PostgreSQL?

Я хотел бы «объявить», что фактически является несколькими таблицами TEMP, используя оператор WITH. Запрос, который я пытаюсь выполнить, выглядит следующим образом: WITH table_1 AS ( SELECT GENERATE_SERIES('2012-06-29', '2012-07-03', '1 day'::INTERVAL) AS date ) WITH table_2 AS ( SELECT...

94
Как я могу использовать несколько общих табличных выражений в одном операторе SELECT?

Я пытаюсь упростить сложный оператор выбора, поэтому решил использовать общие табличные выражения. Объявление одного cte работает нормально. WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1 Можно ли объявить и использовать более одного cte в одном SELECT? т.е. этот sql дает ошибку...