Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 повтор имени поля в запросе  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
День добрый. Есть вопрос по поведению парсера
create table dbo.t_Test(a int)
select a, a from t_Test order by a  -- Ambiguous column name 'a'.
select a as b, a from t_Test order by a -- устраняем повторы имен, ошибка пропадает
select a, a from t_Test z order by z.a -- но почему она пропала здесь?

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4302.0 (X64)
5 май 14, 14:56    [15974204]     Ответить | Цитировать Сообщить модератору
 Re: повтор имени поля в запросе  [new]
Glory
Member

Откуда:
Сообщений: 104751
в ORDER BY можно использовать как имена полей, так и алиасы выражений

select a, a from t_Test z order by z.a -- но почему она пропала здесь? - здесь вы указали точные имя/алиас таблицы и имя поля
5 май 14, 15:03    [15974263]     Ответить | Цитировать Сообщить модератору
 Re: повтор имени поля в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 47083
Shakill
День добрый. Есть вопрос по поведению парсера
create table dbo.t_Test(a int)
select a, a from t_Test order by a  -- Ambiguous column name 'a'.
select a as b, a from t_Test order by a -- устраняем повторы имен, ошибка пропадает
select a, a from t_Test z order by z.a -- но почему она пропала здесь?


Microsoft SQL Server 2008 R2 (SP2) - 10.50.4302.0 (X64)
Наверно, в последнем случае он сразу видит, что поле находится в строго заданной таблице
и колонки всегда имеют одно и то же значение?
А во втором случае надо ещё сообразить, что во FROMе только одна таблица...

Интересный эффект. Вот что значит следовать правилу всегда и везде писать алиасы!
5 май 14, 15:04    [15974272]     Ответить | Цитировать Сообщить модератору
 Re: повтор имени поля в запросе  [new]
order by a
Guest
я вам еще "накину"


select a, * from table order by a
5 май 14, 15:57    [15974720]     Ответить | Цитировать Сообщить модератору
 Re: повтор имени поля в запросе  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
order by a
я вам еще "накину"


select a, * from table order by a

вообще, вопрос как раз на этом примере и возник, перед постом слегка упростил

Glory
в ORDER BY можно использовать как имена полей, так и алиасы выражений

select a, a from t_Test z order by z.a -- но почему она пропала здесь? - здесь вы указали точные имя/алиас таблицы и имя поля

то есть, смысл в том чтобы явно указать, что для сортировки указан не алиас столбца или выражения, а настоящее имя поля из конкретного источника. ок, спасибо
5 май 14, 16:06    [15974775]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить