2015-04-25 2 views
1

Например, моя таблица имеет 3 столбца и 10 строк.SQL: insert into

ID  NAME  ParentID 
1 Parent #1 NULL 
2 Child #1  1 
3 Child #1  1 
4 Child #1  1 
5 Child #2  2 
6 Child #2  2 
7 Child #2  3 
8 Child #2  3 
9 Child #2  3 
10 Child #2  3 

А теперь мне нужно вставить новую строку, но я «знаю» только ID элемента, к которому был включен мой новый элемент, но не значение ParentID.

Так, например, я добавляю новый элемент в Child #1 с ID = 3, который имеет ParentID = 1. И у меня есть только значение ID. Но когда я вставляю элемент в таблицу, мне нужно дать ему право ParentID. Какой запрос я должен использовать?

INSERT INTO `tree`(`ID`, `Name`, `ParentID`) 
VALUES (11, "Inserted Element", "and here I want to give this new element ParentID of element with ID 3, that is 1"); 

Спасибо за помощь!

+0

Каковы ваши критерии? если вы не знаете родителя, как мы должны это догадываться? если parent id - 3 insert 3, то если вы хотите использовать родительский элемент с идентификатором 'id = 3', значит, 3 записи - это родной элемент элемента, который вы хотите вставить? – Alex

+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

Я не знаю, если этот синтаксис является законным с БД, но попробовать что-то вроде этого

INSERT INTO `tree`(`ID`, `Name`, `ParentID`) VALUES (11, "Inserted Element", (SELECT ParentID FROM tree 
WHERE id = 3)); 
1

Вы можете сделать это с insert select утверждением:

insert into `tree`(`ID`, `Name`, `ParentID`) 
select 11, "Inserted Element", `ParentID` 
from `tree` where `ID` = 3 
+0

Работает. Большое спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^