2011-12-03 18 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