我有一个名为USER_OPTIONS的表。 如果我使用以下查询此表:

SELECT * FROM USER_OPTIONS

我得到以下结果:

在此处输入图片说明

现在,我需要将相同的值(A,1),(B,2),(C,3)等复制到同一张表中,但要更改USER_ID值。 最终结果应为:

2 A 1
2 B 2
2 C 3
2 D 4
2 E 5
2 F 6
3 A 1
3 B 2
3 C 3
3 D 4
3 E 5
3 F 6

您可能会想:“非常简单,只需添加一个循环即可。” 但是这里有个问题……我只需要声明一下即可。 有没有办法做到这一点? 怎么样?

#1楼 票数:0 已采纳

只需执行简单的INSERT INTO..SELECT即可

例如,

INSERT INTO user_options SELECT user_id + 1, code, code_value FROM user_options;

COMMIT;

SELECT * FROM user_options;

测试用例

SQL> SELECT * FROM user_options;

   USER_ID C CODE_VALUE
---------- - ----------
         2 A          1
         2 B          2
         2 C          3
         2 D          4
         2 E          5
         2 F          6

6 rows selected.

SQL>
SQL> INSERT INTO user_options SELECT user_id + 1, code, code_value FROM user_options;

6 rows created.

SQL>
SQL> COMMIT;

Commit complete.

SQL>
SQL> SELECT * FROM user_options ORDER BY 1, 2, 3;

   USER_ID C CODE_VALUE
---------- - ----------
         2 A          1
         2 B          2
         2 C          3
         2 D          4
         2 E          5
         2 F          6
         3 A          1
         3 B          2
         3 C          3
         3 D          4
         3 E          5
         3 F          6

12 rows selected.

SQL>

#2楼 票数:0

尝试这个

插入到user_options中从user_options中选择3,code_code_value;

#3楼 票数:0

您可以使用以下方法生成行:

select u.user_id, uo.code, uo.code_value
from (select 2 as user_id from dual union all select 3 as user_id from dual) u cross join
     user_options uo;

如果您只想将它​​们放在同一张表中:

insert into user_option(user_id, code, code_value)
    select 3, code, code_value
    from user_options
    where user_id = 2;

#4楼 票数:0

您可以进行简单的交叉连接,根据您的方案,您可以具有以下表格

  CREATE TABLE [dbo].[Userid] (
    [Id] INT NOT NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)
  );


  CREATE TABLE [dbo].[Code] (
    [Code]       VARCHAR (50) NOT NULL,
    [Code_Value] INT          NULL
  );

然后如下查询

    select * from userid,code order by Id,Code,Code_Value

希望能帮助到你....

#5楼 票数:0

当在user_options和包含所有所需user_id的表之间进行笛卡尔连接时,您将获得所需的结果

select usr.user_id, o.code_,o.code_value from 
user_options o,
(select rownum user_id from dual connect by level <3 ) usr

其中“ usr”是所有user_id的列表。 我只生成1,2-可以通过级别条件进行修改。 或者,您也可以加入包含这些user_id的表。

看一下工作示例:

http://sqlfiddle.com/#!4/bc096/10

  ask by SaintLike translate from so

未解决问题?本站智能推荐:

2回复

如何复制Oracle数据库表中的1000行数据并仅更改1字段的值?

我在Oracle数据库的一张表中有1000行。 我需要在同一张表中复制这些1000行,而只需在新的1000个其他行中更改1字段的值。 通过序列跟踪PK 我确实从“ that_table”中选择*,并在Toad中另存为insert语句以生成1000个insert语句,但是将PK字段值更改
1回复

复制行并在更改列值后插入表中

我有一个表客户,我想在其中复制行并重新插入到同一张表中,但是我必须用sysdate更新列的值。
2回复

从同一oracle SQL表中复制行,并更改某些列值

我在Oracle DB中有一个名为table1的表,如下所示: 我想构建一个查询,该查询将:-从userID 10中选择所有行,并将它们复制到同一表中,并保持所有字段与ID分开(我想它应该自动递增吗?)。 编辑:增量部分将自己递增,只要它是DB列(不是用户创建的)即可。 所以我想
2回复

如何从数据库表中获取列表最新条目以获取特定列的值列表? [复制]

这个问题在这里已经有了答案: 获取具有列最大值的行(35 个回答) 在 sql 中选择每个组的第一行 [重复] (2 个回答)
2回复

如何通过UPDATE将数据从另一个表复制到空表中?

我有空的“EMP_DANIL”表和带有数据的“EMP”表。 如何通过 UPDATE 运算符将数据从 emp 复制到 emp_danil。 这是表的视图: emp_danil , emp
1回复

更改表分区中的范围值

我有一个带分区的大桌子。 例如: 我想改变表,以便MAY分区包含小于'20120501'的值,并且'20120501'到'20120601'的数据存储在DEF分区中。
2回复

在同一个表中复制相同的值

假设我有下表名为“产品”: 我想在同一个表中复制某些产品的库存(使用 cod pro 和 store)作为更新,假设产品 AI 想要移动我从产品 B 中获得的信息(所有信息都在此表中) )。 我不确定我应该如何根据商店和 codpro 复制所有信息。 有人能帮帮我吗?
1回复

SQL:将数据从一个表复制到另一个表,同时添加其他固定值列

我想将表1中的两列复制到表2中,并用固定字符串填充表2中的另外两列。 这是我尝试过的: 但是它给出了missing expression错误。 结果应为所有行的table2 name列为John ,同样,所有行的param列应为age 。 表2 xvalue和yvalue列应包