sql1:存在即更新,否则插入
replace into和on duplcate key update都是只有在primary key或者unique key冲突的时候才会执行。
如果数据存在,replace into则会将原有数据删除,再进行插入操作,这样就会有一种情况,如果某些字段有默认值,但是replace into语句的字段不完整,则会设置成默认值。
而on duplicate key update则是执行update后面的语句。
sql2:行转列
SELECT
coupon_id,
max(CASE WHEN operate_type = 3
THEN operate_name END) 分配券,
max(CASE WHEN operate_type = 4 AND check_level = 2
THEN operate_name END) 一审,
max(CASE WHEN operate_type = 4 AND check_level = 3
THEN operate_name END) 二审,
max(CASE WHEN operate_type = 4 AND check_level = 4
THEN operate_name END) 三审
FROM db.table_name
WHERE
is_deleted = 'N'
GROUP BY coupon_id