我不明白为什么这个查询有效?



我是SQL的新手,我对此感到困惑:我读到如果在选择中有两个相同的列名,你必须把表名放在列名前面。这就是为什么我不明白为什么这个查询工作,没有相同的列名(也不在表中):

select 
item.brand, item.type, item.game_or_console, 
count(*) as amount
from 
item
join
repair on repair.barcode = item.barcode
where 
brand = 'sony'
group by 
item.brand, item.type, item.game_or_console
having 
count (*)  >=1 

为什么这个相同的查询,但与where代替join不工作:

select 
item.brand, item.type, item.game_or_console, 
count(*) as amount
from 
item i, repair r
where 
r.barcode = i.barcode 
and brand = 'sony'
group by 
item.brand, item.type, item.game_or_console
having 
count (*) >= 1 

错误:

Msg 4104, Level 16, State 1, Line 9
多部分标识符"item.brand"无法绑定。

Msg 4104, Level 16, State 1, Line 9
多部分标识符"item.type"无法绑定。

留言4104,16层,状态1,9线等。

我尝试了两个查询,只有一个工作。但我不明白为什么一个可以而另一个不行。

关键是表别名:

select item.brand, item.type, item.game_or_console, count(*) as amount
from item i, repair r   -- < here
where r.barcode = i.barcode 

不再可以访问itemrepair对象,因为它们分别被重命名为ir

相关内容

  • 没有找到相关文章

最新更新