sql - 无需先在另一个表中查找值即可执行 SQL 插入

标签 sql mysql

假设我有两个表:

  • 宠物
  • 物种

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')

是的,我知道我可以先找到 DOGSPECIES.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/

相关文章:

sql - SQL Server 函数中大型 if 子句的性能改进

mysql选择语句。为什么它返回 6 个相同的记录

sql - Oracle将秒数转换为小时:分钟:秒

c# - 如何检查mysql中是否存在多个表?

mysql - 如何从sql表或sql数据库中导出所有单词

c++ - 返回 STRING 的 MySQL UDF 与数据重叠

.net - SQL Server 2008 R2 地理距离?

php - 检查 SQL 数据库中不存在的值

php - 如何在使用php在mysql中上传时调整图像大小

php - MySQL - 主键的重复条目(但实际上不是......)