【问题标题】:Error #1064 - You have an error in your SQL syntax in a MySQL subquery错误 #1064 - MySQL 子查询中的 SQL 语法有错误
【发布时间】:2017-02-26 22:35:59
【问题描述】:

我正在阅读 Paul DuBois 的《MySQL》一书,并且正在准确地了解如何进行子查询。我不知道我的查询逻辑是否正确,但我想我的语法是正确的。

无论如何,我一直收到此错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 'WHERE userID = (SELECT userID FROM usuarios WHERE deprecated_userName = 'webmast' 附近使用正确的语法

对于这个查询:

INSERT INTO cursosUsuarios (deprecated_cursoID, userID) VALUES (4255, 1)
WHERE userID = (SELECT userID FROM usuarios WHERE deprecated_userName = 'webmaster');

我是否遗漏了一些非常明显的东西?

【问题讨论】:

  • 正确的语法是 INSERT INTO table_name VALUES (value1,value2,value3,...);
  • 普通插入语句没有 where 子句。 Insert ... select ... 语句在选择部分可能有一个。

标签: mysql join subquery


【解决方案1】:

普通的insert 语句没有where 子句。 Insert ... select ... 语句可能在选择部分有一个。

我假设您想为您的webmaster 用户注册课程。在这种情况下,我会使用insert ... select ...

INSERT INTO cursosUsuarios (deprecated_cursoID, userID)
SELECT 4255, userID
FROM usuarios
WHERE deprecated_userName = 'webmaster'

【讨论】:

  • 感谢您的回答!!一个问题: 4255 是 deprecated_cursoID 值,我还应该像这样使用 select 语句吗? (...选择 4255 用户 ID...)。再次感谢您的帮助。我刚刚意识到书中的示例是使用带有子查询的 select 语句制作的。
  • 糟糕,在 4255 和用户 ID 之间缺少一个逗号。更新了答案
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多