美文网首页
Mysql 个人花里胡哨的操作记录

Mysql 个人花里胡哨的操作记录

作者: 海生2018 | 来源:发表于2020-03-13 18:27 被阅读0次

    环境

    Mysql5.7

    1 想让一个变量自加怎么办?

    select 然后update?不,mysql可以帮我们做

    update tableA set a=a+1;
    

    这样就可以了
    不过小心查询优化器会改变顺序哦
    例如

    update tableA set a=a+1 ,b=case when a>1 then 0 else 1 end;
    

    假设表中a=0,那么b的赋值语义是不明确的,这里的a是以前的a还是已经更新过的a?
    我自己实践了一下,是更新过的a,所以还是要小心这里的逻辑

    2 如何让一条数据存在就更新,不存在就插入?

    select 判断一下,在决定操作?不,mysql还是可以帮我们做

    insert into tableA (uk,a)  values
    ('uk',1)
    ON DUPLICATE KEY UPDATE
    a=2
    

    这样操作需要将某个键设置为UNIQUE KEY或者依据PRIMARY KEY来判断是否重复
    例如上面插入unique key 为uk的字段,值为'uk',数据库中如果有这条数据,就会把a更新为2,如果没有,就会插入这么一条数据
    这个操作是mysql的扩展功能
    关于他的返回数据
    如果插入成功->1
    如果更新成功->2
    如果更新的值没有变化->0

    相关文章

      网友评论

          本文标题:Mysql 个人花里胡哨的操作记录

          本文链接:https://www.haomeiwen.com/subject/lkysshtx.html