SQL允许使用相同的列名

big*_*e99 11 sql sql-server

当我在SQL Server中运行此查询时

SELECT custid AAA, companyname AAA
FROM Sales.Customers
WHERE country = 'USA'
Run Code Online (Sandbox Code Playgroud)

它运行正常.但现在结果集具有重复的列名称(AAA).为什么SQL服务器允许这种情况发生?如果应用程序需要引用列名,应用程序如何工作?我知道如果你把这个查询作为派生表SQL将阻止你.喜欢

SELECT * 
FROM 
     (SELECT custid AAA, companyname AAA
      FROM Sales.Customers
      WHERE country = 'USA') BBB
Run Code Online (Sandbox Code Playgroud)

SQL Server报告错误:

"BBB"多次指定"AAA"列

这背后的逻辑是什么?

谢谢

Tec*_*ker 1

您为不同的列提供两个相同的别名,这些列将在一个表中呈现为重复列。

这就是它给出错误的原因。

如果您将其设置为不同的别名,则不会发生错误。只需尝试一下,然后让我知道它是否有效。