一条sql实现查询和新增

        在编写sql时,经常会遇到根据查询出来的数据,进行逻辑处理然后再根据条件进行保存数据,当数据量小的时候或测试时,没有多大问题,但是,当数据量比较大时,达到百万级时,就会发现,这种写法是很浪费时间的,我之前遇到过一位同事开发的初始化系统的接口,需要初始化各种配置参数和系统参数,数据量比较大,结果接口跑了十几分钟才结束,这肯定是不能满足客户的要求了,在我协助下,最后接口在3秒内调用完的,就是采用了查询和新增合并的方式来实现的。

废话不多少说,直接上实例代码:

INSERT INTO SYSMN.SYS_MENU(
MENU_ID,HOSPITAL_ID,MENU_CODE,MENU_NAME,PARENT_MENU_ID,MODEL_ID,BASIC_MENU_FLAG,
MODEL_TYPE_FLAG,MENU_SORT,MENU_ICON,DISPLAY_FLAG,PY_CODE,WB_CODE,MENU_LEVEL,
SYS_TYPE,MENU_URL,MENU_STYLE,ACTION_TYPE,ROUTE_NAME,REPORT_ID)
SELECT
	( SELECT max( a.MENU_ID ) FROM SYSMN.SYS_MENU a ) + rownum MENU_ID,
	${hospitalId} HOSPITAL_ID,
	a.MENU_CODE,
	a.MENU_NAME,
	0,
	a.MODEL_ID,
	a.BASIC_MENU_FLAG,
	a.MODEL_TYPE_FLAG,
	a.MENU_SORT,
	a.MENU_ICON,
	a.DISPLAY_FLAG,
	a.PY_CODE,
	a.WB_CODE,
	a.MENU_LEVEL,
	a.SYS_TYPE,
	a.MENU_URL,
	a.MENU_STYLE,
	a.ACTION_TYPE,
	a.ROUTE_NAME,
	a.REPORT_ID 
FROM
	SYSMN.SYS_MENU a 
WHERE
	a.HOSPITAL_ID = 0

注意点:

(1)新增语句在上部,查询语句在下部,新增和查询语句中间不能用 ; 隔开,切记!。

(2)新增语句中只写到需要新增数据的字段即可。

(3)查询时的字段要和新增时的字段的值对应一致,即查询时的值就是一 一对应赋值给新增语句中的字段的。

(4)设计到主键时,如果数据库不支持主键自增,比如oracle,可考虑使用伪列序号协助添加主键。如果新增的某个字段为

默认值,则可在查询语句中对应该字段直接写死即可。

 

这种写法大致可理解为一种方法,这种方法也可将查询、更新语句进行合并,这里不再赘述,需要可留言。

#@Le.Hao#

帮助到您请点赞关注收藏谢谢!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@lehao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值