Псевдонимы в SQL Server - PullRequest
       2

Псевдонимы в SQL Server

3 голосов
/ 18 сентября 2009

Эти два утверждения эквивалентны?

UPDATE Table1 SET Field1=( 
 SELECT Field2 FROM Table2 
 WHERE Table1.ID=Table2.ID
) 
FROM Table1 
WHERE Field1 is null



UPDATE t SET Field1=( 
 SELECT Field2 FROM Table2 
 WHERE t.ID=Table2.ID
) 
FROM Table1 t
WHERE Field1 is null

Я пытаюсь уменьшить количество псевдонимов. Мне кажется, что добавление псевдонима в оператор добавляет только другое имя таблицы, чтобы отслеживать его мысленно.

Меня беспокоит то, что в примере 1, поскольку я не использую псевдоним, он обновит всю таблицу1 вместо фильтрации по WHERE Поле1 равно нулю.

Каково эмпирическое правило, когда требуется псевдоним?

Ответы [ 3 ]

7 голосов
/ 18 сентября 2009

Да, они эквивалентны, потому что псевдонимы никогда не изменят эффект оператора, только его читаемость или устранение неоднозначности.

Но я бы сделал это:

UPDATE Table1 
SET Field1 = Table2.Field2 
FROM Table1 
INNER JOIN Table2 ON Table1.ID=Table2.ID
WHERE Table1.Field1 is null

или это

UPDATE t1
SET Field1 = t2.Field2 
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.ID=t2.ID
WHERE t1.Field1 is null

Используйте псевдонимы, чтобы улучшить читаемость. Лично мне нравится использовать короткие псевдонимы (1-3 символа) для каждой из моих таблиц, всегда используя одни и те же псевдонимы для одних и тех же таблиц, где это возможно, чтобы со временем улучшалась читаемость.

5 голосов
/ 18 сентября 2009

Эти два утверждения эквивалентны, да.

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

Если вы используете полное имя таблицы, это мешает и затрудняет различие с полями, с которыми вы работаете (с первого взгляда).

3 голосов
/ 18 сентября 2009

Эти утверждения эквивалентны.

Псевдоним требуется только в том случае, если вы дважды обращаетесь к таблице, чтобы избежать двусмысленности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...