甲骨文 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';
我有这样的查询:
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';