怎么在insert into语句中使用select

网上有关“怎么在insert into语句中使用select ”话题很是火热,小编也是针对怎么在insert into语句中使用select寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您 。

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发 、测试过程中 ,经常会遇到需要表复制的情况 ,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。

1.INSERT INTO SELECT语句

语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

要求目标表Table2必须存在 ,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量 。示例如下:

--1.创建测试表

create TABLE Table1

(

a varchar(10),

b varchar(10),

c varchar(10),

CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

(

a ASC

)

) ON [PRIMARY]

create TABLE Table2

(

a varchar(10),

c varchar(10),

d int,

CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED

(

a ASC

)

) ON [PRIMARY]

GO

--2.创建测试数据

Insert into Table1 values('赵','asds','90')

Insert into Table1 values('钱','asds','100')

Insert into Table1 values('孙','asds','80')

Insert into Table1 values('李','asds',null)

GO

select * from Table2

--3.INSERT INTO SELECT语句复制表数据

Insert into Table2(a, c, d) select a,c,5 from Table1

GO

--4.显示更新后的结果

select * from Table2

GO

--5.删除测试表

drop TABLE Table1

drop TABLE Table2

2.SELECT INTO FROM语句

语句形式为:SELECT vale1, value2 into Table2 from Table1

要求目标表Table2不存在 ,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中 。示例如下:

--1.创建测试表

create TABLE Table1

(

a varchar(10),

b varchar(10),

c varchar(10),

CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

(

a ASC

)

) ON [PRIMARY]

GO

--2.创建测试数据

Insert into Table1 values('赵','asds','90')

Insert into Table1 values('钱','asds','100')

Insert into Table1 values('孙','asds','80')

Insert into Table1 values('李','asds',null)

GO

--3.SELECT INTO FROM语句创建表Table2并复制数据

select a,c INTO Table2 from Table1

GO

--4.显示更新后的结果

select * from Table2

GO

--5.删除测试表

drop TABLE Table1

drop TABLE Table2

insert语句嵌套select语句

insert into select可以将select 出来的N行(0到任意数)结果集复制一个新表中,select into

from只能将"一行"结果复制到一个变量中。这样说吧 ,select into是PL/SQL language

的赋值语句。而前者是标准的SQL语句 。

做一个测试看两者差别。

首先创建两个表,一个作为源表,一个作为目标表。

create table t_source(

id number primary key,

testname varchar2(20),

createtime date,

flag varchar2(10)

);

create table t_target(

id number primary key,

testname varchar2(20),

createtime date,

flag varchar2(10)

);

接着 ,插入测试数据

insert into t_source values(1,'测试数据1....1',sysdate-2,'N');

insert into t_source values(2,'测试数据1....2',sysdate-2,'N');

insert into t_source values(3,'测试数据1....3',sysdate-2,'N');

commit;

测试insert into select 操作

insert into test2 select * from t_source where id=1;

commit;

测试select into 操作

因为select into是一个plsql语言中的复制语句,和:=实现的目标一样 。

create or replace procedure sp_sync_test is

aa varchar2(100);

v_record t_source%rowtype;

begin

select t1.testname into aa from t_source t1 where id = 1;

dbms_output.put_line('普通变量 t1.testname= ' || aa);

select t1.* into v_record from t_source t1 where id = 1;

dbms_output.put_line('记录变量 t1.testname= ' || v_record.testname);

end;

这里增加了原始类型的变量和记录类型的变量

在VALUES子句中不能有子查询,这样就可以了:

insert into VoteRecord(IP,TopicNum) select '" + ip + "',ID from Topic where [Content]='" + topic + "'

实际生成的语句应该这样:

insert into VoteRecord(IP,TopicNum) select '192.168.1.1',ID from Topic where [Content]='123'

不过 ,为保证不发生错误 ,最好在子查询中加入TOP 1 子句或MAX()函数等,保证子查询记录是一条

insert into VoteRecord(IP,TopicNum) select '192.168.1.1',max(ID) from Topic where [Content]='123'

关于“怎么在insert into语句中使用select”这个话题的介绍,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!

本文来自作者[红烟疤]投稿,不代表善心号立场,如若转载,请注明出处:https://www.shanxin99.net/shan/1228.html

(25)

文章推荐

  • 头骨和骨头揭示了2年级路线图

      对于头骨和骨头来说,大变化正在发生,游戏最近展示了玩家在2年级周期中可以期望的东西。以海盗为主题的动作/冒险游戏对海军战斗非常重视,尽管这一重点似乎在第二年发生了变化,随着途中的战斗以及新功能,新的升级树,新的船只,新的船只等等。这是在SkullandBones的第一年相当平淡的一年之后,开

    2025年05月26日
    40311
  • “我一生的诅咒”:乔治·R·R·马丁对冬天的风有很多话要说……这有点可悲

      乔治·R·R·马丁(GeorgeR.R.不过,这次,似乎粉丝对他未完成的马格努斯(Magnus)作品的抱怨确实在他的皮肤之下。  13年来,球迷们等待着并希望。多年来,当乔治·R·R·马丁(GeorgeR.R.这是催生HBO的《权力的游戏》及其前传Fire&Blood的传奇。最初,马

    2025年05月28日
    34309
  • Skyrim Dev在关键时刻每天工作15个小时来重新平衡游戏

      《上古卷轴V:天际》于2011年末推出,凭借其动作和角色扮演元素的完美结合,迅速赢得了玩家的青睐。然而,直到发行之日,它仍是一项正在进行中的工作,Bethesda的前高级制作人杰夫·加德纳(JeffGardiner)在发行前的最后两周没有亲自重新平衡这些生物,就不会让游戏上市。  Ga

    2025年08月23日
    41300
  • GTA在线赏金猎人更新获得发布日期,预告片,等等

      摇滚之星透露,它的下一个重大更新侠盗猎车手在线,底美元奖金,将于6月25日推出,带来了GTAV的莫德埃克尔斯的回归-这次是在肉体上。新的预告片展示了莫德的赏金猎人女儿詹妮特,新的保释执行行动,以及一系列新的执法车辆,将在下次更新中添加。  即将到来的更新将增加莫德的赏金猎人业务,底美元

    2025年08月23日
    30303
  • 小辣椒手机怎么样?_1

    网上有关“小辣椒手机怎么样?”话题很是火热,小编也是针对小辣椒手机怎么样?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。1.外观设计和感受我相信任何一个买手机的人,都会去注意手机的外观。我个人对手机外观的定位是,“只要不丑,我就可以接受”,别整出个歪瓜劣枣的

    2025年08月26日
    22312
  • 五杀摇滚乐队的乐队成员

    网上有关“五杀摇滚乐队的乐队成员”话题很是火热,小编也是针对五杀摇滚乐队的乐队成员寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。五杀摇滚背景莫德凯撒生来就是一名不羁的吉他手,把他的成长期都花在磨练金属乐的技艺上,直到他的扫弦功力过于出神入化,以至于他的吉他总

    2025年08月31日
    21313
  • 微信运动如何开挂

    网上有关“微信运动如何开挂”话题很是火热,小编也是针对微信运动如何开挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。说到#天才少女#,你会第一时间想到谁?在说姐心中,这个位置非谷爱凌莫属。

    2025年08月31日
    17317
  • 索尼卡片机

    网上有关“索尼卡片机”话题很是火热,小编也是针对索尼卡片机寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。一分钱一分货基本上是真理,J10最便宜,外形轻薄漂亮,还带4G内存。最大的缺点就是没光学防抖,电子防抖都是要牺牲画质的,另外35mm的广角端也不够广,还只

    2025年09月01日
    20307
  • 太极熊猫精9突4双爆最大化人物属性是多少

    网上有关“太极熊猫精9突4双爆最大化人物属性是多少”话题很是火热,小编也是针对太极熊猫精9突4双爆最大化人物属性是多少寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。精9双爆搭配现在出现很多搭配,有的以死神为主,有的以天使为主,但究竟哪家强,且听我分析。第一套

    2025年09月05日
    15312
  • 哈迪斯2指南中心

      《哈迪斯2》由冥界公主梅莉诺依主演。在第一场比赛的事件之后,疯狂的泰坦克罗诺斯设法控制了死亡的领域。现在,轮到Melinoe去发现她的家庭发生了什么。这导致了无数次具有挑战性的遭遇,失败只意味着你要为下一次跑步做准备。这里是我们的哈迪斯2指南枢纽,以帮助您的旅程。目录[hide]冥王2指南轮毂入

    2025年09月08日
    13314

发表回复

本站作者才能评论

评论列表(3条)

  • 红烟疤的头像
    红烟疤 2025年08月27日

    我是善心号的签约作者“红烟疤”

  • 红烟疤
    红烟疤 2025年08月27日

    本文概览:网上有关“怎么在insert into语句中使用select”话题很是火热,小编也是针对怎么在insert into语句中使用select寻找了一些与之相关的一些信息进行分析,...

  • 红烟疤
    用户082708 2025年08月27日

    文章不错《怎么在insert into语句中使用select》内容很有帮助

联系我们

邮件:善心号@gmail.com

工作时间:周一至周五,9:30-17:30,节假日休息

善心号