微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许SQL相同的列名

当我在sql Server中运行此查询
SELECT custid AAA,companyname AAA
FROM Sales.Customers
WHERE country = 'USA'

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

SELECT * 
FROM 
     (SELECT custid AAA,companyname AAA
      FROM Sales.Customers
      WHERE country = 'USA') BBB

sql Server报告错误

The column ‘AAA’ was specified multiple times for ‘BBB’

这背后的逻辑是什么?

谢谢

解决方法

这个问题的原因是:

一个查询

SELECT custid AAA,companyname AAA
   FROM Sales.Customers
   WHERE country = 'USA'

在这里,您在输出时分配列别名,所以AAA作为返回结果时附加的列名称(实际上是别名),但是我猜你会看到只有第一列与其他AAA将被删除,因为可能的冲突在进一步的参考.所以这里你没有得到错误.

第二个查询

SELECT * FROM (
    SELECT custid AAA,companyname AAA
    FROM Sales.Customers
    WHERE country = 'USA') BBB

在这里你有错误,因为你选择了名称为BBB的Inline View记录,这里内部查询(内联视图)被视为一个表(对于你的SELECT * FROM语句),而且我们知道 – 基本上Table不能有多个相同列名称,因为您收到错误,BBB有多个AAA列.

原文地址:https://www.jb51.cc/mssql/76231.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐