Я даже не думал о том, как записать это название. Это SQL Server 2005SSMS 2005 - Не сглаженная колонка, возвращающая разные результаты
Если я делаю тот же запрос с псевдонимом в столбце, а без него, я получаю совершенно разные результаты. Это не двусмысленно.
Пример запроса:
UPDATE MyTable
SET Col1 = Col1 - 1
FROM DB.dbo.MyTable M
WHERE EXISTS (SELECT *
FROM DB.dbo.SecondTable B WITH (NOLOCK)
WHERE B.Col2 = 12345678
AND B.Col3 = 1
AND B.M-FK = M.M-PK)
AND M.Col1 > 0
AND M.Col4 = 87654321;
Этот запрос я предполагал, все к столу сразу, и я получаю значительную отдачу.
Очень похожий запрос, но я не указываю таблица
UPDATE MyTable
SET Col1 = Col1 - 1
FROM DB.dbo.MyTable M
WHERE EXISTS (SELECT *
FROM DB.dbo.SecondTable B WITH (NOLOCK)
WHERE Col2 = 12345678
AND Col3 = 1
AND B.M-FK = M.M-PK)
AND Col1 > 0
AND Col4 = 87654321;
2-й запрос возвращает 1.
только взаимная колонка между это B-ForeignKey => M.PrimaryKey
По моему опыту, я всегда назначал столбцы псевдониму, но когда кто-то задал мне вышеуказанный вопрос раньше, я был совершенно сбит с толку. Если бы они были неоднозначными, SSMS отверг бы это. Тем не менее, он действительно побежал.
Поэтому я подумал, что «возможно» он игнорирует эти столбцы - что странно. , но второй возвращает -1-строку, что добавляет больше путаницы.
Может ли кто-нибудь объяснить, почему изменяется запрос псевдонима или без псевдонима? И почему это вообще заканчивается, если это ошибка?
Хорошее объяснение. Я всегда придерживаюсь псевдонима, это был мой сотрудник, который задал мне этот вопрос, когда он сравнивал свой сценарий с моим и разницу в результатах. Не имея реального ответа для него, и мы оба просто «принимаем» SQL игнорировали его WHERE из-за столбцов, не имеющих конкретной таблицы, но я все еще пытался выяснить «точный» ответ. Похоже, что SSMS игнорирует эти поля. По-прежнему не знаю, как его запрос получил хотя бы один результат, но да. Я согласен с вашим ответом. – DNorthrup
Спасибо за комментарий. Если бы вы могли проголосовать за мой ответ, это также было бы оценено @DNorthrup – Fandango68