错误代码:1064.您的SQL语法有错误; 3表mysql加入

-3 mysql join

当我尝试使用mysql触发查询以连接3个表时,我收到以下错误:

错误代码:1064.您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便mahara.group_member在第6行的'group INNER JOIN as group_members ON group_id = member' 附近使用正确的语法

Mysql是:

SELECT `mahara.group.id` as group_id,
       `mahara.group.name` as group_name,
       `mahara.group_member.member` as member_id,
       `mahara.group_member.group` as member_groupid,
       `mahara.usr.id` as user_id
FROM `mahara.group` as group
     INNER JOIN `mahara.group_member` as group_members ON group_id = member_id,
     INNER JOIN `mahara.usr` as users ON member_id = user_id
LIMIT 0, 200;
Run Code Online (Sandbox Code Playgroud)

对于我的生活,我看不出我做错了什么.任何帮助赞赏.

干杯

Tar*_*ryn 6

您的查询存在一些问题.

首先,您尝试使用保留字创建别名group.你必须使用反引号来逃避保留字.此外,您应该在表和列名称周围有单独的反引号集,它们不应该包含在一对中.

其次,在表上连接之后你有一个额外mahara.group_member的逗号,之后member_id,应删除逗号.

查询应该是:

SELECT `group`.`id` as group_id,
       `group`.`name` as group_name,
       group_members.`member` as member_id,
       group_members.`group` as member_groupid,
       users.`usr.id` as user_id
FROM `mahara`.`group` as `group`
INNER JOIN `mahara`.group_member` as group_members 
  ON group_id = member_id
INNER JOIN `mahara`.`usr` as users 
  ON member_id = user_id
LIMIT 0, 200;
Run Code Online (Sandbox Code Playgroud)

请注意,您应该避免使用保留字作为表,列和别名的名称.

  • 在第一个连接条件(`= member_id,`)之后还有一个不正确的逗号`,`.这也是无效的. (2认同)