甲骨文 SQL:使用 SELECT 插入

Oracle SQL: INSERT with SELECT

我有这样的查询:

insert into book ('book_id', 'category_id', 'book_name', 'buy_price', 'sell_price') values ('B-001, 'BOM-001', 'Tarzan', 200, 300);

是否可以从另一个 table 得到 category_id 类别 table 使用 select 和条件 where category_name = 'adventure' 所以我得到了 BOM-001?任何人都可以给我该查询的示例吗?

谢谢

这看起来像:

insert into book (book_id, category_id, book_name, buy_price, sell_price)
    select ?, c.category_id, ?, ?, ?
    from category c
    where c.category_name = ?;

? 是常量值的占位符。请注意,insert.

的列名周围没有单引号

有两种方法可以达到你想要的效果。

首先:单个值始终可以被 returns 单个值的查询替换:

insert into book (book_id, category_id, book_name, buy_price, sell_price)
values ('B-001', 
        (select category_id from category where category_name = 'adventure'),
        'Tarzan',
        200,
        300
       );

其次:您可以从某处插入您 select 的行:

insert into book (book_id, category_id, book_name, buy_price, sell_price)
select 'B-001', category_id, 'Tarzan', 200, 300
from category where category_name = 'adventure';