我做了一些搜索,并根据这里的示例和其他在线资源重新编写了多次 SQL,但每次运行这个 SQL 时,我都会得到同样的 "#1064 - 您的 SQL 语法错误 "错误。
我试图使用INNER join连接四张表,它们应该总是有匹配的数据作为key off(即每一个有效的tokentoken_id都应该有一条完整的记录)。我使用的是MySQL 5.7.26版本,下面是我尝试运行的查询。
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
我收到的完整错误(每次)是:
#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
t ON t.token_id = i.token_id
INNER JOIN
c ON c.child_id ' at line 11
这些表是这样的
Invites
+---------+----------+----------+-----------+---------------+----------+
| user_id | child_id | token_id | status_id | email | name |
+---------+----------+----------+-----------+---------------+----------+
| 9 | 2 | 1 | 1 | [email protected] | John Doe |
| 9 | 3 | 2 | 1 | [email protected] | Jane Doe |
+---------+----------+----------+-----------+---------------+----------+
Tokens
+----------+---------+
| token_id | token |
+----------+---------+
| 1 | 93kd8i0 |
| 2 | sdie02d |
| 3 | fsj2d9c |
+----------+---------+
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
看了一下其他内部连接的例子,试试把'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'