【问题标题】:Error about "Ambiguous column name"关于“列名不明确”的错误
【发布时间】:2017-02-05 19:50:05
【问题描述】:

我只有一个在 SQL Server 2016 中查询的示例:编写 SQL 代码,该代码将显示表 INVOICE 中的值 InvoiceNumber,其中包含一个值.......

我需要加入 3 张桌子。这是我的代码:

SELECT 
    InvoiceNumber
FROM 
    INVOICE AS I 
INNER JOIN 
    LINE_ITEM AS LI ON (I.InvoiceNumber = LI.InvoiceNumber)
INNER JOIN 
    PRODUCT AS P ON (LI.ProductNumber = P.ProductNumber)
WHERE 
    Description = 'Heather Sweeney Seminar Live in Dakkas on 25-OCT-09 - Video'

而且这段代码总是会导致错误:

不明确的列名 InvoiceNumber

关于SELECT 查询中的WHERE 子句

【问题讨论】:

  • 指定要选择的列,例如I.InvoiceNumber.
  • 请写一个更具体的标题。

标签: sql sql-server-2016


【解决方案1】:

始终限定查询中的所有列名,尤其是当它有多个表时:

SELECT I.InvoiceNumber
FROM INVOICE AS I INNER JOIN
     LINE_ITEM AS LI
     ON I.InvoiceNumber = LI.InvoiceNumber INNER JOIN
     PRODUCT P
     ON LI.ProductNumber = P.ProductNumber
WHERE P.Description = 'Heather Sweeney Seminar Live in Dakkas on 25-OCT-09 - Video'

如果你养成了这个习惯,你根本就不会犯这样的错误。

【讨论】:

    【解决方案2】:

    如果 2 个表具有相同的列,那么您必须在查询中告诉您要使用哪一列。通过在其前面添加表名来做到这一点。

    SELECT I.InvoiceNumber FROM INVOICE AS I ...
    

    【讨论】:

    • 好的,谢谢
    猜你喜欢
    • 2018-10-23
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多