gpt4 book ai didi

sql - 为什么此SQL查询导致 “Ambiguous column name”错误?

转载 作者:行者123 更新时间:2023-12-04 10:16:16 30 4
gpt4 key购买 nike

我有一个无法执行的SQL查询:

select p.PersonID, CreatedDate, * from dbo.Person p 
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by CreatedDate
Person表的PK为 PersonID(int)。 PotentiallyFraudulentPeople View 是对 Person表和其他一些表的查询,以确定我们是否信任某个人。 PotentiallyFraudulentPeople View 只有一列: PersonID

当我尝试执行此查询时,出现以下错误:

Msg 209, Level 16, State 1, Line 3
Ambiguous column name 'CreatedDate'.



我知道这个错误告诉我 CreatedDate列名是模棱两可的,因此需要在我的表别名'p'开头。

该查询有效:
select p.PersonID, CreatedDate, * from dbo.Person p 
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by p.CreatedDate

我不明白的是为什么我需要在 ORDER BY语句中而不是在 SELECT列列表中使用'p'别名。另外,由于 PotentiallyFraudulentPeople View 甚至没有 CreatedDate列,所以我根本不明白为什么需要使用表别名。

谁能解释这种奇怪的行为?

我正在使用SQL Server 2008和SSMS执行查询。

更新
另外,我尝试从 CreatedDate列列表中删除 SELECT列,然后查询不再需要 ORDER BY中的'p'别名。因此,此查询同样适用:
select p.PersonID, * from dbo.Person p 
join dbo.PotentiallyFraudulentPeople pfp on p.PersonID= pfp.PersonID
order by CreatedDate

最佳答案

您要选择CreatedDate列两次。

  • 通过CreatedDate显式表示。
  • 通过*隐式地进行。

  • 它不知道您要对哪个事件进行排序-显然它没有意识到这两个事件都指向同一列。

    关于sql - 为什么此SQL查询导致 “Ambiguous column name”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16342271/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com