代码之家  ›  专栏  ›  技术社区  ›  Joshylad

内部联接对象名无效

  •  -1
  • Joshylad  · 技术社区  · 6 年前

    Select Alias from Db.SchmaName.Customers as Customer
    Select Alias from Db.SchmaName.Orders as Order
    Inner Join Order on Customer.Alias = Order.Alias
    

    Db和SchmaNames完全相同,但这两个表的Alias列不同。

    两个select语句都按预期工作,但内部联接的错误是

    “对象名'Order'无效”

    即使不使用表别名而是键入表的完整路径,也会出现此错误

    5 回复  |  直到 6 年前
        1
  •  2
  •   Thom A    6 年前

    ORDER 是SQL Server中的保留字,请不要将其用于对象名和别名,应该会出现以下错误:

    不要用保留字(甚至是关键字)作为对象名,或者如果必须的话,引用它们( [Order] ). 我个人会:

    SELECT Alias --This is missing an alias as well, so would be ambigous
    FROM Db.SchmaName.Orders O
         INNER JOIN Customer C ON C.Alias = O.Alias;
    

    Customers 作为 Customer 我曾经 C StockItem 我可能会用 SI . 为了一张我叫过的桌子 ic_BD_HPT1 我用 HPT1 .

        2
  •  1
  •   Panagiotis Kanavos    6 年前

    那些是 查询,不是一个。

    Select Alias from Db.SchmaName.Customers as Customer
    Select Alias from Db.SchmaName.Orders as Order
    Inner Join Order on Customer.Alias = Order.Alias
    

    Select Alias from Db.SchmaName.Customers as Customer;
    
    Select Alias from Db.SchmaName.Orders as Order
    Inner Join Order on Customer.Alias = Order.Alias;
    

    第二个查询无效,因为它试图加入 Order 别名。

    Select Order.Alias 
    from Db.SchmaName.Orders as [Order]
    Inner Join Db.SchmaName.Customers as Customer 
        on Customer.Alias = [Order].Alias;
    

    ORDER 是一个关键字,意味着您需要将其括在方括号中或使用更好的别名。事实上, Orders

    Select Orders.Alias 
    from Db.SchmaName.Orders 
    Inner Join Db.SchmaName.Customers as Customer 
        on Customer.Alias = Orders.Alias;
    
        3
  •  1
  •   Zaynul Abadin Tuhin    6 年前

    使用不同的表别名而不是 key word of SQL(Order) 你的加入需要如下

    Select Customer.Alias from Db.SchmaName.Customers as Customer
    inner join Db.SchmaName.Orders as O
     on Customer.Alias = O.Alias
    
        4
  •  0
  •   Alex Gruebel    6 年前

    顺序是SQL中的关键字。不能在SQL中对别名使用关键字,除非在别名周围加上[]。

        5
  •  0
  •   Mazhar    6 年前

    你的问题有两个疑问。

    Select Alias from Db.SchmaName.Customers as Customer
    

    这是第二个

    Select Alias from Db.SchmaName.Orders as Order
    Inner Join Order on Customer.Alias = Order.Alias
    

    在第二个查询中出现错误, 你在试着 JOIN Alias 你已经给了桌子 Orders ,即 ORDER . 您应该做的是引用 ON 条款,就像这样

    Select Order.Alias, Customer.Alias
    from Db.SchmaName.Orders as Order
    INNER JOIN Db.SchmaName.Customers as Customer on Order.Alias = Customer.Alias