我有桌子(简短地说,很少有人错过):
CREATE TABLE `manufacturers` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `clocks` (
`id` INT NOT NULL AUTO_INCREMENT,
`clock_type_id` INT NOT NULL,
`model_name` VARCHAR(45) NOT NULL,
`manufacturer_id` INT NOT NULL,
`cost` DOUBLE(10,2) NOT NULL,
`glass_type_id` INT NOT NULL,
`bracelet_type_id` INT NOT NULL,
`sex_type_id` INT NOT NULL,
`waterproof` boolean NOT NULL DEFAULT FALSE,
`mechanism_type_id` INT,
`touch_screen` boolean,
`telephone_communication` boolean,
PRIMARY KEY (`id`),
FOREIGN KEY (`clock_type_id`) REFERENCES `clock_types`(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`glass_type_id`) REFERENCES `glass_types`(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`bracelet_type_id`) REFERENCES `bracelet_types`(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`sex_type_id`) REFERENCES `sex_types`(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (`mechanism_type_id`) REFERENCES `mechanism_types`(id)
ON DELETE CASCADE
ON UPDATE CASCADE
FOREIGN KEY (`manufacturer_id`) REFERENCES `manufacturers`(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
如果我只知道manufacturer.name
却不知道manufacturer.id
,如何在一个查询中将时钟插入数据库?保留数据的正确格式,因此我必须按原样将其放入查询中。
答案 0 :(得分:0)
尝试INSERT ... SELECT
语句,如下所示:
INSERT
INTO clocks
SELECT NULL, 1, 'rolex-test', m.id, 123.0, 1, 3, 1, 1, 1, null, null
FROM manufacturers AS m
WHERE m.name = 'rolex';