我对一些mysql有一点问题。我会尽量提供更多的背景信息。情况就是这样,我为我父母的苗圃创建了一个可用性并将植物信息存储在 mysql 中,我第一次做得很糟糕,现在我正在用我同时获得的新知识重做它。
问题的背景,我在旧数据库中有 2 个表,其中一个被Gallery
以下字段调用:
( id
, Plant_id_1
, Plant_id_2
, Plant_id_3
, Plant_id_4
, Plant_id_5
, Image1
, Image1_Copyright
, Image2
, Image2_Copyright
, Scientific
, Common
, Category
, Height
, Spread
, Exposure
, Zone
, Descp
)。
这些Plant_id_1...
字段将是使用以下字段id
调用的第二个表Availability
的字段:
( id
, name
, size
, description
, available
, upcomming
, price
)
如您所见,我对数据一无所知(仍然可能不知道),但对表的新结构一无所知,再次plants
使用以下字段调用第一个表的 2 个表:
( id
, scientific_name
, common_name
, category
, height
, spread
, exposure
, usda
, description
, image1_url
, image1_copyright
, image2_url
, image2_copyright
)
第二个current
使用以下字段调用:
( id
, plant_id
, size
, available
, upcoming
, price
, description
)
将plant_id
是表中相应植物的 id plant
。
现在谈谈这个问题。我需要从旧表中获取数据并将其放入新表中。我在新plant
桌子上有画廊里的所有植物,那里没有问题。但现在要Availability
进入Current
表。
这是一个来自出口的例子Availability
(我拿了前 3 名):
INSERT INTO `Availability` (`id`, `name`, `size`, `description`,`available`, `upcomming`, `price`) VALUES(91, 'Acer P.''Shishigashira''', ' #5', '30-36"', 27, 0, 36.00);
INSERT INTO `Availability` (`id`, `name`, `size`, `description`, `available`,`upcomming`, `price`) VALUES(697, 'Arbutus U. ''Compacta''', ' #5','', 0, 0, 16.20);
INSERT INTO `Availability` (`id`, `name`, `size`, `description`, `available`, `upcomming`, `price`) VALUES(90, 'Acer P.''Shigitatsusawa''', '#15', '', 0, 0, 65.00);
我需要plant_id
从植物表中获取并将其放入插入语句中,我相信我有以下内容:
INSERT INTO `current` (`plant_id`, `size`,`description`, `available`, `upcoming`, `price`) VALUES(
(SELECT `id`
FROM `plants`
WHERE `scientific_name`
REGEXP 'Acer P.+ ''Shishigashira'''), ' #5', '30-36"', 27, 0, 36.00);
但是现在我有一个新问题,如果plant
表中没有匹配的植物怎么办,所以我需要一个 ifnull 在那里。用科学名称创建植物,其余为空。好吧,我是 SQL 新手,所以这就是我所拥有的,但它不起作用:
INSERT INTO `current` (`plant_id`, `size`,`description`, `available`, `upcoming`, `price`) VALUES(
(IFNULL( SELECT IFNULL( (SELECT `id`
FROM `plants`
WHERE `scientific_name`
REGEXP 'Chamaecyparis O.+ Nana'),(
INSERT INTO `plants` (`scientific_name`)
VALUES (Chamaecyparis O. 'Nana'))))), ' #1', '', 0, 0, 9.25);
如您所见,如果您认为自己能够应对帮助我的挑战,那将非常复杂,我将不胜感激。如果没有人可以帮助我,我将不得不手动将所有数据重新输入current
表中。