我很困惑,sql如何允许我选择多个具有相同名称的列。
据我所知,它应该显示列模糊。它是如何允许这样的,它的用途是什么?
答案 0 :(得分:4)
在您的第一个查询中,您实际上选择了相同的列3次。没有错,查询引擎没有歧义。
在第二个查询中,您使用表别名前缀从E1中选择EmpName两次,从E2中选择EmpName一次(这是相同的表 - 没有任何错误,并且查询引擎没有歧义)。 / p>
如果您想避免输出中的歧义,请确保为您选择的列添加别名:
SELECT E1.EmpName AS [Employee Name], E2.EmpName AS [ManagerName]
FROM tblEmp E1 INNER JOIN tblEmp E2 ON E2.EmpId = E1.MgrId
答案 1 :(得分:0)
这就是它的工作方式。 sql允许您选择同名的列。但是当你将它包含在where条件中时,它会显示出不明确的列。避免使用别名