0

我在这里重复一个学生的问题。我已经给出了某种解释,但希望你有更好、更清晰的解释。

使用表的两个别名完成自连接:

SELECT parent.Name, child.Name
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId

但这听起来就像我们让事情变得复杂。所以:

(1) 真的需要别名吗?为什么?

(2) 从技术上讲,可以只使用一个别名。为什么所有的例子,在线的,教科书,教程,总是使用两个别名?

4

1 回答 1

6

1) 是的,您必须至少有一个别名。否则,你怎么知道哪个表版本是哪个?

2) 你可以只使用一个别名。两个不是绝对必要的。不过,使用两个别名几乎总是比一个别名更清晰。

哪个更容易一目了然?

SELECT parent.Name, child.Name
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId

或者

SELECT Person.Name, child.Name
FROM Person
INNER JOIN Person child ON Person.Id = child.ParentId

第一个更好地显示意图。


顺便说一句,您可能还想给列加上别名。虽然结果中具有相同名称的两列很好,但它可能会造成混淆,并且如果您尝试将结果行放入客户端代码中的某种关联容器中,它会中断。因此,例如,查询的更好版本将是:

SELECT parent.Name ParentName, child.Name ChildName
FROM Person parent
INNER JOIN Person child ON parent.Id = child.ParentId
于 2012-11-29T10:06:23.340 回答