Oracle

SQL 插入 … 值 (…, select(…))

  • January 23, 2017

我正在嘗試使用與命令Members相同GR_ID = 2的命令插入 25 個使用者 user1…25:

insert into MEMBERS (GR_id, username) values (2, (select username from USERS where username like 'test%'));

但得到錯誤:

  1. 00000 - “單行子查詢返回多於一行”

有什麼建議嗎?

在 Oracle 中使用values子句時,只能提供逗號分隔的值。

如果select要從另一個表中獲取一個或多個行,則必須使用以下語法:

insert into <table>(<col1>,<col2>,...,<coln>)
select <col1>,<col2>,...,<coln>
from ...;

在你的情況下:

insert into MEMBERS(GR_id, username)
select 2, username
from USERS
where username like 'test%';

查詢

select username from USERS where username like 'test%'

.. 返回不止一行。如果你限制它只返回第一行,或者改寫 WHERE 子句只返回一行,你應該沒問題。

引用自:https://dba.stackexchange.com/questions/73648