mysql意外语法错误

mysql意外语法错误,mysql,mysql-workbench,Mysql,Mysql Workbench,因此,我有以下查询(有三个表,因此连接) 现在有六个问题和十个省,但只列出五个问题和五个省,为什么要这样做?您的查询会输出一个包含五个问题和五个省的列表,而不是六个问题和十个省的列表,因为某些id无法在表对应的id中找到,或者某些字段与其他表的其他字段没有关系。如果要检索所有行,请使用左联接: SELECT AVG(survey_responses.survey_response), survey_responders.province, survey_q

因此,我有以下查询(有三个表,因此连接)


现在有六个问题和十个省,但只列出五个问题和五个省,为什么要这样做?

您的查询会输出一个包含五个问题和五个省的列表,而不是六个问题和十个省的列表,因为某些id无法在表对应的id中找到,或者某些字段与其他表的其他字段没有关系。如果要检索所有行,请使用
左联接

SELECT
      AVG(survey_responses.survey_response), 
      survey_responders.province, 
      survey_questions.question 
FROM survey_responses 
LEFT JOIN survey_responders on survey_responses.id = survey_responders.id
LEFT JOIN survey_questions on survey_responders.id = survey_questions.id
GROUP BY survey_questions.question;

那么这不是一个语法错误吗?我们需要知道您的底层数据来理解发生了什么。然而,我的猜测是,您可能需要外部联接,而不是内部联接:有关更多信息,请参阅。还要注意,您选择的是未分组的列
survery\u responders.province
,没有聚合函数:MySQL将不确定地从每个组中只选择一个值。使用别名连接表首先连接做任何事情,但不做任何事情列出表和要获取的数据!!!!!在看不到底层数据的情况下,您怎么可能知道这一点?
SELECT
      AVG(survey_responses.survey_response), 
      survey_responders.province, 
      survey_questions.question 
FROM survey_responses 
LEFT JOIN survey_responders on survey_responses.id = survey_responders.id
LEFT JOIN survey_questions on survey_responders.id = survey_questions.id
GROUP BY survey_questions.question;