У меня есть запрос SQL, который не в состоянии выполнить:Почему этот SQL-запрос вызывает ошибку «Неоднозначное имя столбца»?
select p.PersonID, CreatedDate, * from dbo.Person p
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by CreatedDate
Таблица Person
имеет рК PersonID
(INT). Представление PotentiallyFraudulentPeople
представляет собой запрос таблицы Person
, соединенной с некоторыми другими таблицами, чтобы решить, доверяем ли мы человеку или нет. У PotentiallyFraudulentPeople
вид только один столбец: PersonID
.
Когда я пытаюсь выполнить этот запрос, я получаю эту ошибку:
Msg 209, Level 16, State 1, Line 3
Ambiguous column name 'CreatedDate'.
Я понимаю, что эта ошибка говорит мне, что имя CreatedDate
столбца неоднозначно, и мне нужно предварить его псевдоним моего стола, 'п'.
Этот запрос работает:
select p.PersonID, CreatedDate, * from dbo.Person p
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by p.CreatedDate
То, что я не понимаю, почему я должен использовать «р» псевдоним в ORDER BY
заявления, а не в списке SELECT
колонка. Кроме того, я не понимаю, почему мне нужно использовать псевдоним таблицы вообще, поскольку в представлении PotentiallyFraudulentPeople
даже нет столбца CreatedDate
.
Может ли кто-нибудь объяснить это странное поведение?
Я использую SQL Server 2008 и SSMS для выполнения запроса.
UPDATE
Кроме того, я попытался удалить CreatedDate
столбец из моего списка SELECT
столбца, а затем запрос больше не требует «р» псевдонима в ORDER BY
. Так что этот запрос работает так:
select p.PersonID, * from dbo.Person p
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by CreatedDate
Это звучит как странное поведение для SQL Server, но это объясняет мою проблему. Благодаря! Я приму этот ответ, как только смогу. –
Просто была эта проблема, и это было причиной, не понимал, что это была проблема с заказом на – MichaelF