Что произойдет, если я выберу что-то как имя, а затем как то же имя? - PullRequest
1 голос
/ 17 декабря 2011

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

SELECT 'a' AS col1, 'b' AS col1

Приведет ли это к ошибке с тем же именем столбца?

Будет ли всегда возвращаться последнее значение или есть вероятность, что col1 может быть 'a'?

Ответы [ 3 ]

3 голосов
/ 17 декабря 2011

Я не уверен, почему вы захотите этого, но я попробовал это в Oracle (10g), и оно работало нормально, возвращая оба столбца. Я понимаю, что вы спрашивали о SQL Server конкретно, но мне показалось интересным, что это сработало вообще.

Редактировать: Это также работает на MySQL.

2 голосов
/ 17 декабря 2011

Работает в конечном запросе:

enter image description here

Однако, когда вы делаете это в подвыборах и ссылаетесь на неоднозначные псевдонимы столбцов во внешнем запросе, вы получаете ошибку:

enter image description here

2 голосов
/ 17 декабря 2011

В SQL 2008 r2 он действителен как отдельный запрос. При определенных обстоятельствах это приведет к ошибкам (неполный список):

  • Встроенные представления

  • Общие записи в таблице

  • Хранимые процедуры, когда выходные данные используются службами отчетов и предположительно аналогично интегрированными инструментами

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

...