MYSQL 6.3 中的 INNER JOIN 问题

issue with INNER JOIN in MYSQL 6.3

我正在尝试像这样连接两个表中的数据:

Select portt.nameport, tool.weapen
From Portt 
Where  portt.toolsum - (    select count(*) 
                            From tool               
                            Group by nameport) >2
INNER JOIN tool on tool.nameport=portt.nameport;

但是出现1064错误:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN tool on tool.nameport=portt.nameport' at line 6

我不明白为什么。

这段没有内部连接的代码工作正常:

Select portt.nameport
From Portt 
Where  portt.toolsum - (    select count(*) 
                            From tool               
                            Group by nameport) >2;

首先,这个查询:

Select portt.nameport
From Portt 
Where  portt.toolsum - (select count(*) 
                        From tool               
                        Group by nameport
                       ) > 2;

您有一个标量子查询。但是,如果可以 return 超过一行,这将是一个错误。我猜你想要一个相关的子查询:

select p.nameport
from Portt p
where p.toolsum - (select count(*) 
                   from tool t          
                   where t.nameport = p.nameport
                  ) > 2;

那么,JOINFROM子句中的运算符。整个 FROM 子句需要出现在 where 之前。所以我怀疑你想写:

select p.nameport
from Portt p join
     tool t
     on t.nameport = p.nameport
where p.toolsum - (select count(*) 
                   from tool t          
                   where t.nameport = p.nameport
                  ) > 2;