【问题标题】:Select Primary Key In Inner Join在内部联接中选择主键
【发布时间】:2013-07-03 23:14:05
【问题描述】:

我在 SQL Server 中为 Select 做了一个声明

SELECT Oid      AS 'Order ID',
       Eid      AS 'Employee ID',
       Barcode,
       PacksQty AS 'Pack Quantity',
       UnitQty  AS 'Units Quantity',
       Date     AS 'Order Date',
       Price    AS 'Total Price'
FROM   OrderDetails
       INNER JOIN Orders
         ON OrderDetails.Oid = Orders.Oid 

而选择Oid的错误和错误是“Ambiguous column name 'Oid'”

【问题讨论】:

    标签: sql-server select inner-join


    【解决方案1】:

    Oid 在两个表中都是模棱两可的。与自然联接(未在 SQL Server 中实现)不同,您需要指定要从表中 SELECT 的值。

    这似乎是多余的,因为您的查询已经指定了 OrderDetails.Oid = Orders.Oid,但是这两个值实际上可以不同(例如,如果 OrderDetails.Oid'abc'Orders.Oid'ABC' 并且在不区分大小写的排序规则上)。

    您可以定义表别名以避免输入整个表名。下面的示例语法(对您的架构做出一些假设)

    SELECT O.Oid      AS 'Order ID',
           O.Eid      AS 'Employee ID',
           OD.Barcode,
           OD.PacksQty AS 'Pack Quantity',
           OD.UnitQty  AS 'Units Quantity',
           OD.Date     AS 'Order Date',
           OD.Price    AS 'Total Price'
    FROM   OrderDetails OD
           INNER JOIN Orders O
             ON OD.Oid = O.Oid 
    

    【讨论】:

    • 非常感谢它现在可以工作了:)
    猜你喜欢
    • 2017-01-01
    • 2010-12-26
    • 1970-01-01
    • 2012-09-01
    • 2014-11-21
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多