咱们好啊,又跟咱们见面了,最近有个需求便是批量修改公司的数据报表,正式环境!! 而且要履行update!!
update it_xtgnyhcebg I set taskStatus = XXX
而且是没有加where条件的,相当于全表更新,这可大意不得,咱们在任何操作正式数据库之前一定一定要对数据库备份!!不要问我怎样知道的,因为我就因为有一次把测验环境的数据掩盖到正式环境去了。。。
别到时分就后悔莫及,那是没有用的!
因为这个需求是需求在跨库操作的,所以咱们在查询数据的时分需求带上库的称号,例如这样
SELECT
*
FROM
BPM00001.ACT_HI_PROCINST P
LEFT JOIN BPM00001.ACT_HI_VARINST V ON V.PROC_INST_ID_ = P.ID_
AND V.NAME_ = '__RESULE'
这样假如咱们在任何一个库里边,只要在一个mysql服务里边都可以访问到这个数据
查出这个表之后
咱们需求根据这儿的内容显示出不同的东西
就例如说是“APPROVAL”
我就显示“已通过”
这就类似与java中的Switch
,其实sql也能实现这样的作用
如下:
这便是sql的case句子的使用
有了这些数据之后咱们就可以更新数据表了,回到咱们之前讨论过的,这是及其危险的操作
咱们先把要set的值给拿出来
但是咱们怎样知道这个里边的主键呢? 你假如直接这么加,肯定是不行的 所以咱们需求在sql后边参加这样的一条句子 留意,这个句子一定要写在set句子的里边,这样sql就能根据里边判别的条件进行逐个赋值 最终,将这个sql句子履行到出产库中
拓宽:
作为查询句子的key肯定不能重复,否则会失利(找bug找了半天的人的好心提醒)
例如上面的句子中P.BUSINESS_KEY_
必需要确保是唯一的!!
成功履行!!! 怎样样,这些sql的小妙招你学会了吗?