假设我有两个表:
- 宠物
- 物种
SPECIES
表有两列:
- ID - 物种编号
- 描述 - 物种描述(狗、猫、乌龟等)
PETS
表有两列:
- NAME - 宠物的名字
- SPECIES 指向
SPECIES
表的ID
字段的链接
如果我想要一个包含所有名为 FLUFFY
的猫的列表,我可以在 单个 SQL 语句中执行以下操作:
select *
from NAME, SPECIES
where PETS.NAME = 'FLUFFY'
and SPECIES.DESCRIPTION = 'CATS'
and PETS.SPECIES = SPECIES.ID
现在,我有一只新宠物,BOWSER
,它是一只狗。我希望能够说出这样的话:
INSERT INTO PETS
(PETS.NAME, SPECIES.DESCRIPTION)
VALUES
('BOWSER', 'DOG')
是的,我知道我可以先找到 DOG
的 SPECIES.ID
,然后插入:
my $species = $sql.execute(select ID from SPECIES where description = 'DOG');
insert into PETS (NAME, SPECIES)
values ('BOWSER', '$species')
但是,我想在 单个 SQL 语句 中执行插入,就像我执行查询的方式一样。这可能吗?
最佳答案
关于:
INSERT INTO Pets(Name, Species)
SELECT 'Bowser' AS Name, ID AS Species
FROM Species
WHERE Description = 'DOG';
关于sql - 无需先在另一个表中查找值即可执行 SQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4135846/