尝试做一个简单的内部联接查询,但不断出现错误
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和SchmaName完全相同,但Alias列不同。
这两个select语句均按预期工作,但内部联接的错误为
“无效的对象名称'订单'”
即使我不使用表别名,而是输入表的完整路径,我也会收到此错误
答案 0 :(得分:2)
我很惊讶这就是您遇到的错误。 ORDER
是SQL Server中的保留字,请勿将其用于对象名和别名,您应该会得到以下错误:
'order'附近的语法不正确。
不要为对象名称使用保留词(甚至实际上不是关键词),或者,如果需要,请使用引号([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;
别名对于使您的SQL简洁非常有用。将表Customers
别名为Customer
并没有真正做到这一点。许多人(例如我本人)倾向于使用几个字符为表添加别名。因此,对于Customer
,我使用了C
。就个人而言,我倾向于在对象名称中使用特定单词的字母。例如,如果我有一个名为StockItem
的表,则可能会使用SI
。对于我称为ic_BD_HPT1
的表,我使用HPT1
。
答案 1 :(得分:1)
使用不同的表别名而不是key word of SQL(Order)
,两个表中都存在Alias列,因此在选择和选择中使用table.column
您的加入需求如下
Select Customer.Alias from Db.SchmaName.Customers as Customer
inner join Db.SchmaName.Orders as O
on Customer.Alias = O.Alias
答案 2 :(得分:1)
那些是两个查询,而不是一个。
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
别名与其自身相连。
要连接两个表,您需要在FROM,JOIN语句中指定表本身。如果要选择两个表中都存在的一列,则必须明确指定所需的列,例如:
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 :(得分:0)
Order是SQL中的关键字。您不能在SQL中使用关键字作为别名,除非您在别名周围加上[]。 我将使用其他名称作为别名。
答案 4 :(得分:0)
您的问题中有两个查询。
这是一个
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
的{{1}}相对,即Orders
。相反,您应该在ORDER
子句上引用别名,就像这样
ON