2

在以下示例 SQL 中

select * from (
  select col
  from myTable mt
  inner join anotherMyTable amt on mt.id = amt.id
) as t
where 
  exists (select amt.colX from anotherMyTable amt where amt.id = 42)

“amt”别名在两个地方定义。使用与第一个名称相同的名称声明第二个表别名是否正确,或者我应该使用另一个名称(amt2)?

在此示例中,我假设两个别名位于不同的范围内,因此可以使用相同的名称。我使用 Informix DBMS。

ps 这是一个示例 SQL,问题仅与表别名范围有关。

4

1 回答 1

1

在这个范围内:

exists (select amt.colX from anotherMyTable amt where amt.id = 42)

没有定义 amt 别名,因此您可以使用此别名。

下面的两个例子都是错误的:

select * from (
  select col
  from myTable amt
  inner join anotherMyTable amt on amt.id = amt.id
) as t
where 
  exists (select amt.colX from anotherMyTable amt where amt.id = 42)


select * from (
  select col
  from myTable mt
  inner join anotherMyTable amt on mt.id = amt.id
) as amt
where 
  exists (select amt.colX from anotherMyTable amt where amt.id = 42)
于 2013-09-01T06:33:48.697 回答