为什么我们应该在具有相同列名的内连接的where子句中指定列名?

时间:2016-01-06 08:15:55

标签: sql inner-join where

我有查询

 select gltree.*,tsacc.confirm,tsacc.acc_no,commacc.* from tsacc  
  inner join commacc on tsacc.acc_no = commacc.acc_no and tsacc.glcode = commacc.glcode
  inner join gltree on tsacc.glcode = gltree.glcode
  where gltree.glcode = 12738

在此查询中,两个指定的表具有' glcode' 列名称, so 为什么我应该在where子句中指定表名,例如。 gltree.glcode 并且不能只使用没有表名的glcode?因为我们在执行查询中只有一个glcode?

1 个答案:

答案 0 :(得分:1)

您实际上有三个列具有该名称(tsacc.glcodecommacc.glcodegltree.glcode),因此您需要告诉数据库您的意思。

选择列表中的列列表将作为处理语句的最后一步进行评估。因此,当DB处理where子句时,它不会知道"你实际上使用了哪些(你可以使用它们)。

Plus:使用内连接确实无关紧要,但如果你使用外连接,那么在where子句中使用这三列中的哪一列会产生很大的不同。