SELECT t.id, x.*
FROM some_table t
INNER JOIN (
SELECT x.id, sum(z.quantity)
FROM other_table x
INNER JOIN another_table y on y.id_x = x.id
GROUP BY x.id
) x ON x.id = t.id
正如您所看到的,我使用了相同的别名x
两次:一次在主查询中,一次在子查询中。
可以吗?或者这可能会有潜在的问题?
我得到的结果是正确的,但可能这是一个侥幸,我想确定。
查询应该正常运行。外部查询不会"看到"。如果在子查询中使用别名x
,它将只知道别名为x
的整个子查询的结果集。话虽如此,从代码技巧的角度来看,出于几个原因,我通常避免在查询中多次使用相同的别名。如果其他人正在阅读您的查询,那么在几个地方使用x
作为别名可能会使他们迷惑。此外,如果有人继承和重构你的代码,别名重用也可能导致bug。