sql - Oracle 11g:将列从一个表复制到另一个添加序列 ID。删除序列
问题描述
我想将列值从一个表复制到另一个表中,例如(不起作用):
create sequence INSTITUTION_SEQ
minvalue 1
maxvalue 999999999999999999999
start with 1
increment by 1
cache 20;
INSERT INTO INSTITUTION
(ID, NAME)
VALUES(
INSTITUTION_SEQ.nextval,
SELECT DISTINCT ACB_BANK_NAME FROM LUP ORDER BY ACB_BANK_NAME
);
问题
- 为了得到预期的结果,正确的 SQL 查询是什么?
- 如何在脚本末尾删除序列?尝试
DROP INSTITUTION_SEQ
但导致ORA-00950: invalid DROP option
解决方案
您可以使用以下方法获取顺序值,而不是创建/使用/删除序列:
INSERT INTO INSTITUTION (ID, NAME)
SELECT ROW_NUMBER() OVER (ORDER BY ACB_BANK_NAME), ACB_BANK_NAME
FROM
( -- DISTINCT is processed after ROW_NUMBER
SELECT DISTINCT ACB_BANK_NAME FROM LUP
) dt;
INSERT INTO INSTITUTION (ID, NAME)
SELECT ROW_NUMBER() OVER (ORDER BY ACB_BANK_NAME), ACB_BANK_NAME
FROM LUP
GROUP BY ACB_BANK_NAME; -- GROUP BY is processed before ROW_NUMBER
推荐阅读
- python - neomodel 无法匹配记录
- c# - Unexpected '集合被修改;枚举操作可能无法执行。List 枚举的例外,尽管 List 没有被修改
- flutter - 是否可以在 Flutter 中启动 SizedBox 的二维数组(例如,我需要某种正方形)
- laravel - 当用户单击使用 laravel 的文章时,我正在尝试增加 DB 中的计数值
- node.js - 在 NPM 包中使用 require
- call - 如何在laravel中将刀片文件调用到另一个刀片文件?
- vba - VBA访问无效使用Null
- html - 我的指向其他 html 页面的 href 链接不起作用
- python - Python SQL executemany 语句不起作用
- c# - DLL 自动添加到构建输出中