我的MySQL表有三列十行:
ID NAME ParentID
1 Parent #1 NULL
2 Child #1 1
3 Child #1 1
4 Child #1 1
5 Child #1 2
6 Child #1 2
7 Child #1 3
8 Child #1 3
9 Child #1 3
10 Child #1 3
在前端添加新元素后,我只获得此新元素所属的父ID。
让我们看看这个例子。我想将新元素添加到Child #1
ID
等于3
且ParentID
等于1
的{{1}}。
从前端,我只获得ID
值(例如上面示例中的3
)。当我想将新元素插入表格时,我需要将此元素设置为正确的ParentID
。我应该使用什么查询来实现这一目标?请看下面的查询:
INSERT INTO `tree` (`ID`, `Name`, `ParentID`)
VALUES (11, "The new element", "and here I'd like to give this new element the ParentID of the element with ID equals to 3");
答案 0 :(得分:1)
通常这需要通过应用程序级别完成,但是在同一个查询中,您可以使用insert into .. select from
insert into `tree`(`ID`, `Name`, `ParentID`)
select
11,
"Inserted Element",
ParentID
from(
select ParentID from tree where ID = 3
)x
答案 1 :(得分:1)
我不知道这种语法对你的数据库是否合法,但尝试类似这样的
INSERT INTO `tree`(`ID`, `Name`, `ParentID`) VALUES (11, "Inserted Element", (SELECT ParentID FROM tree
WHERE id = 3));
答案 2 :(得分:1)
您可以使用insert select
声明执行此操作:
insert into `tree`(`ID`, `Name`, `ParentID`)
select 11, "Inserted Element", `ParentID`
from `tree` where `ID` = 3
答案 3 :(得分:1)
Oracle's page about Look and Feels
INSERT INTO tree (id, name, parentID)
SELECT 11, 'Inserted Element', parentID
FROM tree t
WHERE t.id = 3;