2017-02-26 142 views
0

我正在阅读Paul DuBois撰写的MySQL书籍,并且我正在遵循如何执行子查询。我不知道我的查询逻辑是否正确,但我想象我的语法是正确的。错误#1064 - 您在MySQL子查询中的SQL语法错误

不管怎样,我不断收到此错误:

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 'WHERE userID = (SELECT userID FROM usuarios WHERE deprecated_userName = 'webmast' at line 2

对于此查询:

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

有什么很明显,就是我失踪?

+1

正确的语法是INSERT INTO table_name的 VALUES(值1,值2,值3,...); – ad4s

+0

普通插入语句没有where子句。插入...选择...语句可能在选择部分中有一个。 – Shadow

回答

1

平原insert声明不具有where条款。 Insert ... select ...声明可能在选择部分中有一个。

我假设你想注册你的webmaster用户到一门课程。我会用insert ... select ...在这种情况下:

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

感谢您的回答!一个问题:4255是deprecated_cursoID值,我是否仍然使用它的select语句呢? (... SELECT 4255 userID ...)。再次感谢您的帮助。我刚刚意识到本书中的例子是用带子查询的select语句完成的。 – Rosamunda

+1

糟糕,错过了4255和userID之间的逗号。更新了答案 – Shadow