gpt4 book ai didi

sql - 不明确的列名

转载 作者:行者123 更新时间:2023-12-04 14:07:06 25 4
gpt4 key购买 nike

我对 ORDER BY 与 SQL Server 2014 的行为感到困惑。

我有一个这样的查询:

select a.Name, b.Status
from a
join b on a.parent_id = b.parent_id
order by parent_id

这个查询会报错

Ambiguous column name 'parent_id'

这是有道理的,因为该列出现在两个表中。我不明白的是,如果我在 SELECT 中列出其中一列,如下所示:

select a.Name, b.*
from a
join b on a.parent_id = b.parent_id
order by parent_id

它有效。

我理解 ORDER BY 是一种“后进”类型的操作,这就是您可以按列序号排序的原因。而且我知道您可以按 SELECT 子句中未列出的列进行排序。那么,为什么它会在一种情况下抛出错误而不是另一种?如果我要在 SELECT 中列出表 a 中的列与在表 b 中的 ORDER BY 中列出列,排序是否不同?

编辑:这个问题的答案:Ambiguous Column Name: Why is it ambiguous in certain circumstances?解释了我的问题,但为了清楚起见,它不像那个问题所暗示的那样依赖于版本。

最佳答案

当您说 order by parent_id 时,SQL 引擎必须查找 parent_id。有两种可能:

  • FROM 子句
  • SELECT 子句

如果没有表别名,SQL Server 将首先在 SELECT 中查找。瞧!如果它在那里找到 parent_id,那么它就完成了。如果必须转到 FROM 子句进行解析,它只会检测重复项。

关于sql - 不明确的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025469/

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