1
我有兩個表:SQL語句(從另一個使用ID W /無連接標準)插入一個表從兩個
CREATE TABLE `data_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`data` longtext NOT NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
`data_item_type` varchar(255) NOT NULL,
`data_source_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `IDX_AFA125D21A935C57` (`data_source_id`),
CONSTRAINT `FK_AFA125D21A935C57` FOREIGN KEY (`data_source_id`) REFERENCES `data_sources` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7192 DEFAULT CHARSET=utf8;
和
CREATE TABLE `map_locations` (
`id` int(11) NOT NULL,
`latitude` decimal(9,6) DEFAULT NULL,
`longitude` decimal(9,6) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`address` varchar(255) DEFAULT NULL,
`status` varchar(255) NOT NULL,
`message_codes` longtext NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `FK_B28E0DE7BF396750` FOREIGN KEY (`id`) REFERENCES `data_items` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我試圖完成一個兩步過程。第一個查詢工作正常:
INSERT INTO data_items (`data`, created, updated, data_item_type, data_source_id) SELECT data_items.data, now(), now(), data_items.data_item_type, 2
FROM data_items
WHERE data_items.data_source_id = 1
- > 1和2是示例值
現在,我要抓住每一個ID從「data_items」(即剛剛創建的自動INCS)和使用在「map_locations」表中插入每個新的(對應的行),當那些ID的。
所以,
data_items
id | data_source_id
1 | 1
2 | 1
3 | 2
4 | 2
map_locations
id | content
1 | aaa
2 | bbb
....
3 | aaa
4 | bbb
我需要複製行(1,2),使用來自data_items(3,4)的ID,並將這些行。
希望這是sense..it是相當混亂。 TIA。
感謝您深入的答案 - 我大多明白這一點。我的另一項任務開始工作,但我會很快再次訪問這個並試圖執行此項修復。謝謝 - 我會報告回來。 –
+100給你!這工作 - 一個很酷的解決方案。再次感謝。 –
我不明白最後一行...爲什麼我們清除「underlying_id」。我知道如果我們不這樣做,會發生FKC錯誤。 –