zoukankan      html  css  js  c++  java
  • on duplicate key update简单使用

    最近在做项目的时候,遇到这样的一个问题,就是我每做完一件事情,都要更新一下统计表,然而要更新统计表,就要根据主键去统计表里面去查询是否已经有这样的一条记录,如果有那么就更新,如果没有那么就插入一条记录用on duplicate key update去做。

    表结构:

    +-----------+---------+------+-----+---------+-------+
    | Field     | Type    | Null | Key | Default | Extra |
    +-----------+---------+------+-----+---------+-------+
    | player_id | int(11) | NO   | PRI | NULL    |       |
    | count     | int(11) | YES  |     | NULL    |       |
    +-----------+---------+------+-----+---------+-------+
    2 rows in set (0.01 sec)

    老做法是写三条sql语句:

    select * from player_count where player_id = 1;//查询统计表中是否有记录

    insert into player_count(player_id,count) value(1,1);//没有记录就执行insert 操作

    update player_count set count = count+1 where player_id = 1;//有记录就执行update操作

    这种写法比较麻烦

    用on duplicate key update 的做法如下:

    insert into player_count(player_id,count) value(1,1) on duplicate key update count=count+1;

    INSERT INTO taobao_url
    VALUES('','".$sku."','".$link."','".$taobao_attribute."','".$website_attribute."')
    ON DUPLICATE KEY UPDATE `url` = VALUES(`url`),`taobao_attribute` = VALUES(`taobao_attribute`),
    `website_attribute` = VALUES(`website_attribute`)

    这样每次不管插入还是更新都调用这句语句就能达到我们要的效果,省了不少的判断。

  • 相关阅读:
    「数列分块入门学习笔记」
    「Luogu P3273 [SCOI2011]棘手的操作」
    「CF1342D Multiple Testcases」
    「CF803G Periodic RMQ Problem」
    【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)
    【cf比赛记录】Codeforces Round #601 (Div. 2)
    【cf比赛记录】Codeforces Round #600 (Div. 2)
    【学习报告】简单搜索
    【POJ2676】Sudoku
    【POJ1416】Shredding Company
  • 原文地址:https://www.cnblogs.com/you-jia/p/4323809.html
Copyright © 2011-2022 走看看