当前位置: 首页 > 知识库问答 >
问题:

有没有办法在oracle sql列中插入数据,其中生成的行基于给定的最小值和最大值

裴翰学
2023-03-14

例如,我有一个名为table_A的表,其列为COLUMN_A和COLUMN_B。COLUMN_A的数据为“Body Number”,COLUMN_B为空,但数据类型为Number。我想更新或插入到TABLE_A中,以使用范围值填充COLUMN_B,范围值从68900000开始,到68999005,其中COLUMN_A=“Body Number”。因此,我希望在COLUMN-B中插入的行数为899005行。

共有3个答案

夏侯彬郁
2023-03-14

在我看来,这能解决问题

update table_a
   set column_b = (68900000 - 1) + rownum
 where column_a = 'Body number'
   and (68900000 - 1) + rownum < 68999005;

正如Littlefoot所提到的,68900000和68999005之间的差异只是99005,而不是899005

吕翰飞
2023-03-14

我推测,这就是 INSERT,除非您在表中已经有该行数。

顺便说一句,你期望的行太多了;这两个数字的差值不是899.005。

SQL> create table table_a (column_a varchar2(20), column_b number);

Table created.

SQL> insert into table_a (column_a, column_b)
  2  select 'Body Number', 68900000 + level - 1 column_b
  3  from dual
  4  connect by level <= 68999005 - 68900000 + 1;

99006 rows created.

SQL> select min(column_b), max(column_b) from table_a;

MIN(COLUMN_B) MAX(COLUMN_B)
------------- -------------
     68900000      68999005

SQL>
红弘盛
2023-03-14

我会用一个序列来做:

假设这是您的桌子:

create table Table_A (columnA varchar2(100), columnB number);

创建如下序列:

create sequence testS 
  MINVALUE 68900000
  MAXVALUE 68999005
  START WITH 68900000
  INCREMENT BY 1;

并如下更新您的表格:

update Table_A
set columnB = testS.nextval
where columnA = 'Body Number';

这是一个小演示

如果您确实收到错误,例如“TESTS.NEXTVAL超过MAXVALUE并且无法实例化…”,那么您将首先像这样删除序列:

drop sequence testS;

然后使用明瓦尔或最大瓦尔或两者的新值创建一个新序列。例如:

create sequence testS 
  MINVALUE 68800000
  MAXVALUE 68999005
  START WITH 68800000
  INCREMENT BY 1;

我将MINVAL从68900000更改为68800000,这样我就允许序列从68800000开始生成100000个新数字,而不是从689000000开始。在这种情况下,我还将START WITH值更改为688000。

 类似资料:
  • 本文向大家介绍如何确定R数据帧列中具有最小值和最大值的行?,包括了如何确定R数据帧列中具有最小值和最大值的行?的使用技巧和注意事项,需要的朋友参考一下 在数据分析中,我们经常需要确定最小值和最大值,因为这些值有助于我们理解所考虑的列或变量的限制。可以通过在单个方括号中使用which.max表示最大值,并使用which.min表示最小值来提取行。 示例 请看以下数据帧- 输出结果 确定具有特定列的最

  • 这个问题有多项式解吗?如果有,你能呈现吗?

  • 第一次问问题(温柔点),因为我还没有找到任何有用的东西。 在R中,我有两个数据帧。一个(DataFrameA)有一列带有唯一日期列表。另一个(DataFrameB)也有日期列表。但是DataFrameB中的某些日期在DataFrameA中可能不存在。在这种情况下,我想将DataFrameB中的日期更新为DataFrameA中的最小日期,该日期大于DataFrameB中的日期。 在SQL中,我可能会

  • 给出加权无向图G(v,e)的权值为w(e),求出使每对顶点(u,v)∈G连通(简言之为)且所选边的权值范围最小(或最小权值与最大权值之差最小)的边集。 我尝试了贪婪的方法,根据权重对边进行排序,然后在排序的数组中选择连续边之间权重差最小的两条边(G[index=current_left],G[index+1=current_right]),然后根据(current_left,current_lef

  • 问题内容: 我有一张价格变动表,我需要获取初始价格和最新价格。换句话说,我想在每种产品的一行中显示min(StartDate)和max(StartDate)的价格值。 表的结构很简单: 所需的结果是 问题答案: SQLFiddle演示

  • 还有其他关于datatable上的行运算符的帖子。它们要么太简单,要么解决了特定的场景 我这里的问题更一般。有一个使用dplyr的解决方案。我已经尝试过了,但没有找到一个使用数据的等效解决方案。表语法。你能推荐一个优雅的数据吗。与dplyr版本复制相同结果的表解决方案? 编辑1:真实数据集上建议解决方案的基准总结(10MB,73000行,24个数字列上的统计数据)。基准结果是主观的。然而,经过的时