Mysql SQL-多个表的内部联接引发语法错误
我已经做了一些搜索,并根据这里的示例和其他在线来源多次重新处理我的SQL,但每次运行此SQL时,我都会得到相同的“#1064-您的SQL语法有错误”错误 我正在尝试使用内部连接连接四个表,它们应该始终有匹配的数据要输入(即,对于每个有效的令牌/token\u id,应该始终有一整行)。我使用的是MySQL版本5.7.26 以下是我正在尝试运行的查询:Mysql SQL-多个表的内部联接引发语法错误,mysql,sql,inner-join,Mysql,Sql,Inner Join,我已经做了一些搜索,并根据这里的示例和其他在线来源多次重新处理我的SQL,但每次运行此SQL时,我都会得到相同的“#1064-您的SQL语法有错误”错误 我正在尝试使用内部连接连接四个表,它们应该始终有匹配的数据要输入(即,对于每个有效的令牌/token\u id,应该始终有一整行)。我使用的是MySQL版本5.7.26 以下是我正在尝试运行的查询: SELECT i.name AS invitee_name, c.first_name AS child_first,
SELECT
i.name AS invitee_name,
c.first_name AS child_first,
c.last_name AS child_last,
s.invite_status,
c.avatar
FROM
Invites AS i, Tokens AS t, Children AS c, Invite_Statuses AS s
WHERE
t.token = sdie02d
INNER JOIN
t ON t.token_id = i.token_id
INNER JOIN
c ON c.child_id = i.child_id
INNER JOIN
s ON s.status_id = i.status_id
我(每次)收到的全部错误是:
这些表如下所示:
Invites
+---------+----------+----------+-----------+---------------+----------+
| user_id | child_id | token_id | status_id | email | name |
+---------+----------+----------+-----------+---------------+----------+
| 9 | 2 | 1 | 1 | a@example.com | John Doe |
| 9 | 3 | 2 | 1 | b@example.com | Jane Doe |
+---------+----------+----------+-----------+---------------+----------+
感谢您提供的任何帮助。此处出现多个错误
SELECT
i.name AS invitee_name,
c.first_name AS child_first,
c.last_name AS child_last,
s.invite_status,
c.avatar
FROM
Invites AS i
INNER JOIN Tokens AS t
ON t.token_id = i.token_id
INNER JOIN Children AS c
ON c.child_id = i.child_id
INNER JOIN Invite_Statuses AS s
ON s.status_id = i.status_id
WHERE
t.token = qme34jh
查看其他内部联接的示例,尝试将“where”语句放在末尾,看看是否有效 您需要在where子句条件“qme34j”中添加“”
declare @Tokens Table ( token_id int, token varchar(100))
declare @Children Table ( child_id int, first_name varchar(100), last_name varchar(100), avatar int)
declare @Invite_Statuses table (status_id int, invite_status varchar(100))
SELECT
i.name AS invitee_name,
c.first_name AS child_first,
c.last_name AS child_last,
s.invite_status,
c.avatar
FROM
@Invites AS i
INNER JOIN @Tokens AS t
ON t.token_id = i.token_id
INNER JOIN @Children AS c
ON c.child_id = i.child_id
INNER JOIN @Invite_Statuses AS s
ON s.status_id = i.status_id
WHERE
t.token = 'qme34jh'
不要将联接表的名称/别名放在
中的位置。将它们放入内部联接中
。e、 g.内部连接令牌作为t.token\u id=i.token\u id上的t
。在的where
中,只有第一个/'main'表应该命名/别名。此时,与任何基本的介绍性书籍或教程在一起5分钟将是有益的。where在内部连接之后请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码输入的最小代表性示例;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。您有一个语法错误。阅读语法和手册。显示组成子表达式是正确的。
Children
+----------+------------+-----------+--------+
| child_id | first_name | last_name | avatar |
+----------+------------+-----------+--------+
| 1 | Timmy | Johnson | 4 |
| 2 | Jenny | Smith | 32 |
| 3 | Jake | Jones | 12 |
+----------+------------+-----------+--------+
Invite_Statuses
+-----------+---------------+
| status_id | invite_status |
+-----------+---------------+
| 1 | invited |
| 2 | accepted |
| 3 | rejected |
+-----------+---------------+
SELECT
i.name AS invitee_name,
c.first_name AS child_first,
c.last_name AS child_last,
s.invite_status,
c.avatar
FROM
Invites AS i
INNER JOIN Tokens AS t
ON t.token_id = i.token_id
INNER JOIN Children AS c
ON c.child_id = i.child_id
INNER JOIN Invite_Statuses AS s
ON s.status_id = i.status_id
WHERE
t.token = qme34jh
declare @Tokens Table ( token_id int, token varchar(100))
declare @Children Table ( child_id int, first_name varchar(100), last_name varchar(100), avatar int)
declare @Invite_Statuses table (status_id int, invite_status varchar(100))
SELECT
i.name AS invitee_name,
c.first_name AS child_first,
c.last_name AS child_last,
s.invite_status,
c.avatar
FROM
@Invites AS i
INNER JOIN @Tokens AS t
ON t.token_id = i.token_id
INNER JOIN @Children AS c
ON c.child_id = i.child_id
INNER JOIN @Invite_Statuses AS s
ON s.status_id = i.status_id
WHERE
t.token = 'qme34jh'