我想问下数据库INSERT语句中的union all有什么用呢?

如题~insertintoWORKERSselect'A',25,'统计',3000,1unionallselect'B',30,'设计规划',9000,2unional... 如题~
insert into WORKERS
select 'A',25,'统计',3000,1 union all
select 'B',30,'设计规划',9000,2 union all
select 'C',20,'代码员',2000,3

我只知道这样相当于3条insert插入到表中,但是为什么能这样做呢?insert语句怎么后面可以跟这个多个select子句呢》谁能解释下~谢谢~
展开
 我来答
470563152
2011-05-09 · TA获得超过391个赞
知道小有建树答主
回答量:242
采纳率:96%
帮助的人:144万
展开全部
1:union 相当于数学里面的并集,另外还有expect(差集),Intersect交集分别返回两个表的差集和交集
2:insert into WORKERS
select 'A',25,'统计',3000,1 union all
select 'B',30,'设计规划',9000,2 union all
select 'C',20,'代码员',2000,3
此处union all相当于将三条数据并起来通过一个insert语句插入数据库的,
亦即是执行了三个inser into WORKERS values('A',25,'统计',3000,1);语句
3,以上是单值插入,如果要将一张表满足某一条件的所有数据插入另一张表的话就要用到insert .....into.....select.....from语句了
比如:insert into 目标表(字段1,字段2,字段3) select 字段1_1,字段2_1,字段3_1 from 源表 where 条件表达式
4,有其他疑问可以问我!
hit_lubin
推荐于2017-11-24 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2065万
展开全部
insert into table select ...
这样的不加union all的insert into能理解吧?
就是通过一个select查询的结果集完成一次性的多行插入。
而UNION ALL也是一样,是SELECT语句的一部分,两个UNION ALL把三行数据集合起来,一次插入到表WORKERS中。
这个是SQLSERVER语法,SELECT 定值(不需要表)表示一行固定值。
您直接看insert into workers后边的部分,看看结果,结果是什么,这次插入的数据就是什么。
如果没有union all,那么每次只能插入一行。
追问
谢谢各位~都回答的很好~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
摆渡浮桥
2011-05-09 · TA获得超过3630个赞
知道大有可为答主
回答量:1610
采纳率:100%
帮助的人:2255万
展开全部
这个语句分为两部分,select ... union all 和insert
其实 select ... union all... 又由三个select 语句组成,通过union all 将select的结果联合起来。
你可以单独运行:
select 'A',25,'统计',3000,1 union all
select 'B',30,'设计规划',9000,2 union all
select 'C',20,'代码员',2000,3
它会产生3行。
最后,通过insert语句,将3行一次性插入到WORKERS表中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友818239c
2011-05-09 · TA获得超过361个赞
知道小有建树答主
回答量:731
采纳率:25%
帮助的人:224万
展开全部
insert into WORKERS
这是一个迁移数据的sql语句,你想呀。
insert into WORKERS
select 'A',25,'统计',3000,1
只能迁移一条数据,union all
相当于连接的意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式