Sql 内部联接顺序在我的查询中很重要

Sql 内部联接顺序在我的查询中很重要,sql,postgresql,inner-join,Sql,Postgresql,Inner Join,第一个问题 select name, letters, date, count(p.playernumber) as data from players p inner join fines f using(playernumber) group by playernumber 第二个问题 select name, letters, date, count(p.playernumber) as data from fines f inner join players p using(sp

第一个问题

select name, letters, date, count(p.playernumber) as data 
from players p inner join fines f using(playernumber) 
group by playernumber
第二个问题

select name, letters, date, count(p.playernumber) as data 
from fines f inner join players p using(spelersnr) 
group by playernumber
第一个查询无法运行,而第二个查询正在运行。我以为内部连接的顺序无关紧要?为什么第二个查询能够运行,因为我认为select-except聚合中的每一列都必须位于group-by中


非常有趣。这是因为Postgres支持在GROUPBY子句中使用主键和唯一键,然后允许与每个键关联的列位于select中,而不使用聚合函数。ANSI标准支持这一点

问题是spelersnr是不明确的——它可能来自任何一个表。我猜Postgres默认使用第一个表来解析查询。当列是主键时,就可以了,因为naam等来自该表。如果该列不是主键,则可能会出现错误

解决办法很简单:

group by s.spelersnr
我希望Postgres会发出一个错误,比如spelersnr不明确——这意味着它不知道它来自哪个表。如果使用on子句而不是using子句,则两个查询都会出现这样的错误