1、merge into.....using ...when matched then.....
应用场景:一般用于表与表之间字段的更新。判断A表与B表是否满足on中的条件,如果满足则用A表更新B表,如果不满足,则将A表中的数据插入到B表
例子:有一个表T,里面有两个字段a,b,我们想在表T中做insert/update操作,如果条件满足则更新T表中的b,否则在T表中插入一条数据
merge into 目标表T1 using 原表T2 on (T1.条件字段 = T2.条件字段 and T1.条件字段 = T2.条件字段 ) when matched then update set T1.更新字段 = T2.字段 when not matched then insert into T1 (字段1,字段2,......)values (值1,值2,......);
2、replace---替换
update table_name set [column_name] = replace ([column_name])
3、case when .... then ....end ----
①、通常做判断使用,when ..... then 之间可以加条件
②、when ...then ... 可以多次进行判断
4、row_number()over() rank()over()
①、通常是作为给每条数据添加字段使用
②、用法:ROW_NUMBER()OVER(PARTITION BY 分组列1,分组列2 ,... ORDER BY 排序列1,排序列2 ....)
③、一般用在select......from之间
5、NOT EXISTS / EXISTS
在SQL语句中常用,其中NOT EXISTS 表示子查询查询不到结果就为真,用于区别两个表数据的不同
语法:SELECT * FROM TABLEA A WHERE NOT EXISTS ( SELECT * FROM TABLEB B WHERE A.COLUMN = B.COLUMN)
其中要注意与IN 的区别,IN需要在WHERE 后面加上COLUMN ,这点属于语法上的区别