sql-多个表的内部联接引发语法错误

m1m5dgzv  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(392)

我已经做了一些搜索,并根据这里的例子和其他在线资源多次重新处理我的sql,但每次运行此sql时,我都会得到相同的“#1064-您的sql语法有错误”错误。
我正在尝试使用内部连接连接四个表,它们应该始终有匹配的数据来进行键关闭(即,对于每个有效的令牌/token\u id,应该始终有一整行)。我使用的是MySQL5.7.26版本,下面是我尝试运行的查询:

  1. SELECT
  2. i.name AS invitee_name,
  3. c.first_name AS child_first,
  4. c.last_name AS child_last,
  5. s.invite_status,
  6. c.avatar
  7. FROM
  8. Invites AS i, Tokens AS t, Children AS c, Invite_Statuses AS s
  9. WHERE
  10. t.token = sdie02d
  11. INNER JOIN
  12. t ON t.token_id = i.token_id
  13. INNER JOIN
  14. c ON c.child_id = i.child_id
  15. INNER JOIN
  16. s ON s.status_id = i.status_id

我(每次)收到的全部错误是:

  1. # 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
  2. t ON t.token_id = i.token_id
  3. INNER JOIN
  4. c ON c.child_id ' at line 11

表格如下所示:

  1. Invites
  2. +---------+----------+----------+-----------+---------------+----------+
  3. | user_id | child_id | token_id | status_id | email | name |
  4. +---------+----------+----------+-----------+---------------+----------+
  5. | 9 | 2 | 1 | 1 | a@example.com | John Doe |
  6. | 9 | 3 | 2 | 1 | b@example.com | Jane Doe |
  7. +---------+----------+----------+-----------+---------------+----------+
  1. Tokens
  2. +----------+---------+
  3. | token_id | token |
  4. +----------+---------+
  5. | 1 | 93kd8i0 |
  6. | 2 | sdie02d |
  7. | 3 | fsj2d9c |
  8. +----------+---------+
  1. Children
  2. +----------+------------+-----------+--------+
  3. | child_id | first_name | last_name | avatar |
  4. +----------+------------+-----------+--------+
  5. | 1 | Timmy | Johnson | 4 |
  6. | 2 | Jenny | Smith | 32 |
  7. | 3 | Jake | Jones | 12 |
  8. +----------+------------+-----------+--------+
  1. Invite_Statuses
  2. +-----------+---------------+
  3. | status_id | invite_status |
  4. +-----------+---------------+
  5. | 1 | invited |
  6. | 2 | accepted |
  7. | 3 | rejected |
  8. +-----------+---------------+

谢谢你的帮助。

kqqjbcuj

kqqjbcuj1#

此处出现多个错误

  1. SELECT
  2. i.name AS invitee_name,
  3. c.first_name AS child_first,
  4. c.last_name AS child_last,
  5. s.invite_status,
  6. c.avatar
  7. FROM
  8. Invites AS i
  9. INNER JOIN Tokens AS t
  10. ON t.token_id = i.token_id
  11. INNER JOIN Children AS c
  12. ON c.child_id = i.child_id
  13. INNER JOIN Invite_Statuses AS s
  14. ON s.status_id = i.status_id
  15. WHERE
  16. t.token = qme34jh
展开查看全部
rsl1atfo

rsl1atfo2#

看看其他内部连接的例子,试着把where语句放在末尾,看看是否有效?
https://www.mysqltutorial.org/mysql-inner-join.aspx/

n3ipq98p

n3ipq98p3#

需要在where子句条件“qme34j”中添加“”

  1. declare @Tokens Table ( token_id int, token varchar(100))
  2. declare @Children Table ( child_id int, first_name varchar(100), last_name varchar(100), avatar int)
  3. declare @Invite_Statuses table (status_id int, invite_status varchar(100))
  4. SELECT
  5. i.name AS invitee_name,
  6. c.first_name AS child_first,
  7. c.last_name AS child_last,
  8. s.invite_status,
  9. c.avatar
  10. FROM
  11. @Invites AS i
  12. INNER JOIN @Tokens AS t
  13. ON t.token_id = i.token_id
  14. INNER JOIN @Children AS c
  15. ON c.child_id = i.child_id
  16. INNER JOIN @Invite_Statuses AS s
  17. ON s.status_id = i.status_id
  18. WHERE
  19. t.token = 'qme34jh'
展开查看全部

相关问题