(T-SQL) Зачем этому подзапросу нужен псевдоним? - PullRequest
0 голосов
/ 03 октября 2018
SELECT 
*

FROM

 (SELECT 
    ROW_NUMBER() OVER (PARTITION BY a.vendorid ORDER BY a.CreatedDateUTC) as RowNum
    ,*

 FROM 
    ZpVendors_Kim.dbo.VendorPaymentAcceptanceAudit a) Needs_Alias_Here

 WHERE 
    RowNum = 1

Очень простой запрос, просто интересно - зачем нужен псевдоним для его работы?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Псевдоним после подзапроса (или производной таблицы, если вы предпочитаете) требуется SQL Server.Это не только требование, но и действительно хорошая идея.Как правило, ссылки на столбцы должны быть квалифицированными , что означает, что они содержат псевдоним таблицы.Без псевдонима ссылки на столбцы в подзапросе не могут быть уточнены.Я думаю, что это плохо.

SQL Server - не единственная база данных, для которой требуется псевдоним.MySQL и Postgres (и, следовательно, большинство баз данных, производных от Postgres) также делают это.Oracle и SQLite нет.Как и Google BigQuery.

Я не знаю, является ли псевдоним требованием ANSI / ISO.Тем не менее, я всегда использую один, независимо от базы данных.

0 голосов
/ 03 октября 2018

каждый подзапрос в FROM должен иметь псевдоним в SQL

Вы должны определить, чтобы вы могли добавить дополнительные ограничения к вашему запросу.в противном случае ваш DB Engine не будет знать, как обращаться к подзапросу.

Мы можем думать о результате подзапроса как о новой таблице, но у этой таблицы нет имени, поэтому дайте ему псевдоним.

...