sql数据库 insert into 表(列1,列2)select 列1,列2 from 表 ?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql数据库 insert into 表(列1,列2)select 列1,列2 from 表 ?相关的知识,希望对你有一定的参考价值。
sql数据库 insert into 表(列1,列2)select 列1,列2 from 表 ? 如何设置插入的列1是默认值
insert into 目标数据库名.dbo.目标表 (数据列1,数据列2) select 数据列1,数据列2 from源数据库名.dbo.源表名
这样就可以了 数据列可以是多列 两边对应就可以 列名可以不一样 比如
目标表列名是a b 源表这边是 c d 只要类型一样就行 参考技术A SQL> create table tblaa(object_id number,object_name varchar2(20));
表已创建。
SQL> insert into tblaa select 10 as object_id,object_name from dba_objects where
rownum<=5;
已创建5行。
SQL> commit;
提交完成。
SQL> col object_name for a10
SQL> select * from tblaa;
OBJECT_ID OBJECT_NAM
---------- ----------
10 ICOL$
10 I_USER1
10 CON$
10 UNDO$
10 C_COBJ#本回答被提问者采纳
ORACLE 同表列转行
表test字段a1 a2 a3值 1 2 3 11 12 13我想查询结果把这六个值变成一列6条数据a123111213
由于实际表字段有30个union all 的话sql语句太长了,不知道有什么简便方法没
insert into test values (1,2,3) ;
insert into test values (11,12,13) ;
dexter@REPO>select a from (
2 SELECT *
3 FROM test
4 UNPIVOT(
5 a
6 for v
7 IN(a1, a2, a3)
8 ));
A
----------
1
2
3
11
12
13
已选择6行。
用的是11g列转行函数,unpovit。 这些列的数据类型必须是一致的。试一下吧。
参考技术A 可以用oracle的分析函数listagg,但11g以后才有 参考技术B 列转行有如下方法。你试试这些Sql代码
CREATE TABLE t_col_row(
ID INT,
c1 VARCHAR2(10),
c2 VARCHAR2(10),
c3 VARCHAR2(10));
INSERT INTO t_col_row VALUES (1, 'v11', 'v21', 'v31');
INSERT INTO t_col_row VALUES (2, 'v12', 'v22', NULL);
INSERT INTO t_col_row VALUES (3, 'v13', NULL, 'v33');
INSERT INTO t_col_row VALUES (4, NULL, 'v24', 'v34');
INSERT INTO t_col_row VALUES (5, 'v15', NULL, NULL);
INSERT INTO t_col_row VALUES (6, NULL, NULL, 'v35');
INSERT INTO t_col_row VALUES (7, NULL, NULL, NULL);
COMMIT;
SELECT * FROM t_col_row;
CREATE TABLE t_col_row(
ID INT,
c1 VARCHAR2(10),
c2 VARCHAR2(10),
c3 VARCHAR2(10));
INSERT INTO t_col_row VALUES(1, 'v11', 'v21', 'v31');
INSERT INTO t_col_row VALUES(2, 'v12', 'v22', NULL);
INSERT INTO t_col_row VALUES(3, 'v13', NULL, 'v33');
INSERT INTO t_col_row VALUES(4, NULL, 'v24', 'v34');
INSERT INTO t_col_row VALUES(5, 'v15', NULL, NULL);
INSERT INTO t_col_row VALUES(6, NULL, NULL, 'v35');
INSERT INTO t_col_row VALUES(7, NULL, NULL, NULL);
COMMIT;
SELECT * FROM t_col_row;
1)UNION ALL适用范围:8i,9i,10g及以后版本
Sql代码
SELECT id, 'c1' cn, c1 cv
FROM t_col_row
UNION ALL
SELECT id, 'c2' cn, c2 cv
FROM t_col_row
UNION ALL
SELECT id, 'c3' cn, c3 cv FROM t_col_row;
SELECT id, 'c1' cn, c1 cv
FROM t_col_row
UNION ALL
SELECT id, 'c2' cn, c2 cv
FROM t_col_row
UNION ALL
SELECT id, 'c3' cn, c3 cv FROMt_col_row;
若空行不需要转换,只需加一个where条件,
Sql代码
WHERE COLUMN IS NOT NULL
WHERE COLUMN IS NOT NULL
即可。2)MODEL适用范围:10g及以后
Sql代码
SELECT id, cn, cv FROM t_col_row
MODEL
RETURN UPDATED ROWS
PARTITION BY (ID)
DIMENSION BY (0 AS n)
MEASURES ('xx' AS cn,'yyy' AS cv,c1,c2,c3)
RULES UPSERT ALL
(
cn[1] = 'c1',
cn[2] = 'c2',
cn[3] = 'c3',
cv[1] = c1[0],
cv[2] = c2[0],
cv[3] = c3[0]
)
ORDER BY ID,cn;
SELECT id, cn, cv FROMt_col_row
MODEL
RETURN UPDATED ROWS
PARTITION BY (ID)
DIMENSION BY (0 AS n)
MEASURES ('xx' AS cn,'yyy' AScv,c1,c2,c3)
RULES UPSERT ALL
(
cn[1] = 'c1',
cn[2] = 'c2',
cn[3] = 'c3',
cv[1] = c1[0],
cv[2] = c2[0],
cv[3] = c3[0]
)
ORDER BY ID,cn;
3)collection适用范围:8i,9i,10g及以后版本要创建一个对象和一个集合:
Sql代码
CREATE TYPE cv_pair AS OBJECT(cn VARCHAR2(10),cv VARCHAR2(10));
CREATE TYPE cv_varr AS VARRAY(8) OF cv_pair;
SELECT id, t.cn AS cn, t.cv AS cv
FROM t_col_row,
TABLE(cv_varr(cv_pair('c1', t_col_row.c1),
cv_pair('c2', t_col_row.c2),
cv_pair('c3', t_col_row.c3))) t
ORDER BY 1, 2; 参考技术C 用循环试试
以上是关于sql数据库 insert into 表(列1,列2)select 列1,列2 from 表 ?的主要内容,如果未能解决你的问题,请参考以下文章