2011-12-03 19 views
2

嵌套插入我有递归表:与选择

CREATE TABLE IF NOT EXISTS `Table1` (
    `Id_table1` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    `Name` VARCHAR(45) NOT NULL , 
    `Parent_Id` INT UNSIGNED NOT NULL , 
    PRIMARY KEY (`Id_table1`) , 
    INDEX `fk_Table1_Table1` (`Parent_Id` ASC) , 
    UNIQUE INDEX `Id_UNIQUE` (`Id_table1` ASC) , 
    CONSTRAINT `fk_Table1_Table1` 
     FOREIGN KEY (`Parent_Id`) REFERENCES `Table1` (`Id_table1`) 
     ON DELETE NO ACTION 
     ON UPDATE NO ACTION) 
    ENGINE = InnoDB; 

我试图执行:

INSERT INTO table1 (`Name`, `Parent_Id`) 
    VALUES ('name123', SELECT Id_table1 
         from table1 
         where table1.`Name` = 'sampleName') 

不幸的是,收到一个错误。

数据表:

id: 1 name: name1 parent_id: null 
id: 2 name: name11 parent_id: null 
id: 3 name: name123 parent_id: null 

任何想法如何执行此插入?

+0

是sampleName在表1的值?插入之前,它已被提交,以便它可以被选中? – xQbert

+0

当您对引发错误的查询有疑问时,它也会有所帮助,您也会在问题中包含错误。 –

回答

5

请尝试以下INSERT

INSERT INTO table1 (Name, Parent_Id) 
SELECT 'name123', t.Id_table1 
FROM table1 AS t 
WHERE t.Name = 'sampleName'; 
+0

这就是工作。谢谢 – galica