Mysql 不明确的列名错误

Mysql 不明确的列名错误,mysql,syntax-error,Mysql,Syntax Error,我知道很多人都发过这方面的帖子,但他们中似乎没有一个人像我一样有这样的错误 当我运行此语句时,出现错误1052 mysql> SELECT module_staff.StaffName AS Staff, SUM(modules.HoursPerWeek) AS Total_Worked FROM module_staff, modules WHERE ModuleCode IN (SELECT ModuleCode

我知道很多人都发过这方面的帖子,但他们中似乎没有一个人像我一样有这样的错误

当我运行此语句时,出现错误1052

mysql> SELECT module_staff.StaffName AS Staff, 
              SUM(modules.HoursPerWeek) AS Total_Worked 
       FROM module_staff, modules 
       WHERE ModuleCode IN (SELECT ModuleCode
                            FROM module_staff 
                            WHERE StaffName ='Nigel Cosworth');
但下面的代码确实有效

mysql> SELECT Title, 
              SUM(modules.HoursPerWeek) AS Total_Worked 
       FROM modules 
       WHERE ModuleCode IN(SELECT ModuleCode 
                           FROM module_staff
                           WHERE StaffName ='Nigel Cosworth');
module_staff有ModuleCode和StaffName列


模块栏只需要每周小时数、标题和模块代码,我认为错误在于
JOIN
。 尝试按如下方式更新查询:

SELECT ms.StaffName AS Staff, SUM(m.HoursPerWeek) AS Total_Worked 
FROM module_staff ms
LEFT JOIN modules m
ON ms.ModuleCode = m.ModuleCode
WHERE ms.StaffName ='Nigel Cosworth';

将适用于u…

问题是您在WHERE子句中引用了
ModuleCode
,并且它存在于联接中的两个表中。你想要哪张桌子?你需要在列前面加上表格。好的,谢谢你对我的代码的编辑。下次发帖时我会记住这一点。你是对的,谢谢你。还感谢您向我展示了语句中表格的命名,以节省键入的时间。我在这里还处于初级阶段
   SELECT ms.StaffName AS Staff, SUM(m.HoursPerWeek) AS Total_Worked 
FROM module_staff ms
LEFT JOIN modules m
ON ms.ModuleCode = m.ModuleCode
WHERE ms.StaffName ='Nigel Cosworth';