Mysql插入列名是(来自同一个表的另一列的SELECT值)

时间:2014-11-26 10:09:04

标签: mysql

像这样名为categories的表

IdRows  |  CategoriesName |  UpperLevelName
--------------------------------------------
 1      |  SomeName       |  

例如,想要插入第二行,看起来像这样

IdRows  |  CategoriesName |  UpperLevelName
--------------------------------------------
 2      |  SomeNameNext   |  SomeName

像这样查询

INSERT INTO categories (
CategoriesName,
UpperLevelName
)
VALUES (
?,
(SELECT CategoriesName FROM categories WHERE IdRows = ?)
)

我的意思是UpperLevelName希望在CategoriesName

中插入IdRows = 1

但是得到错误You can't specify target table 'categories' for update in FROM clause

理解错误在这里(SELECT CategoriesName FROM categories WHERE IdRows = ?)

什么是正确的代码?

1 个答案:

答案 0 :(得分:0)

insert ... select语法不包含values关键字。而且你需要构建一个临时表,因为在MySQL中你无法更新你正在选择的表

INSERT INTO categories (CategoriesName, UpperLevelName)
SELECT * from 
(
   select ?, CategoriesName FROM categories WHERE IdRows = ?
) tmp