首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql技巧:如果记录存在则更新如果不存在则插入的三种处理方法

要求: 新增一个员工时,如果该员工已存在(以员工号f_emp_code作为判断依据),则更新,否则插入。而且工资f_salary,更新时,不得低于原工资(即:工资只能涨,不能降)。...10007' , '新人' , '西安' , IF(1000 > f_salary , 1000 , f_salary)); replace into相当于,先检测该记录是否存在(根据表上的唯一键),如果存在...这个方法有一个很大的问题,如果记录存在,每次执行完,主键自增id就变了(相当于重新insert了一条),对于有复杂关联的业务场景,如果主表的id变了,其它子表没做好同步,会死得很难看。...但是有另外一个问题,如果这个表上有不止一个唯一约束,在特定版本的mysql中容易产生dead lock(死锁),见网友文章https://blog.csdn.net/pml18710973036/article

9.2K20

记录不存在则插入,存在则更新 → MySQL 的实现方式有哪些?

,不存在则执行插入   针对这个需求,我们有哪些实现方式?...,碰到 不存在则插入,存在则更新 的需求时,第一时间往往想到的是 REPLACE INTO   工作原理 replace into 跟 insert 功能类似   不同点在于: replace into...首先尝试插入数据到表中,如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据,否则直接插入新数据 replace 语句会返回一个数,表示受影响的行的数目,该数是被删除和被插入的行数的和...值的新纪录是插入时就会发生 duplicate key error ,每次冲突之后 AUTO_INCREMENT += 1,直到增长为 max(id) + 1 之后才能恢复正常 INSERT UPDATE   针对 不存在则插入...,存在则更新 , MySQL 还提供了另外一种方言实现: INSERT ...

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPJAM MetaData:可视化管理 WordPress Meta 数据

    汇总模式 在汇总模式下,我们可以很快看到两个信息: 系统用了哪些 meta_key,分别是什么。 每个 meta_key 使用的数量。...这样我们就能对自己系统的情况了然于胸了,并结合目前系统的状态,如果哪个 meta_key 已经不再使用,就可以点击删除,就可以把使用该 meta_key 的所有 Meta 数据都删除。...如果感觉数据繁杂,还可以点击 post_id 和 meta_key 进行过滤,查看单篇文章或者单个 meta_key 下面所有 meta 数据。...如果是内部链接,直接跳转, 标签或者分类,则自动转换成标签或分类链接, 否则跳转到搜索链接。...如果你觉得某个选项无用,可以直接删除它。 后台论坛 WordPress 后台论坛,支持创建帖子,分组,消息。 微信小程序 微信小程序 WordPress 基础插件,包含基础类库和管理。

    82840

    解决WordPress修改数据库表前缀后无法登陆的问题

    网上找到的方法如下(玛思阁稍作整理): ---- 默认的表前缀为 wp_,如果你修改了 wp_config.php 中的表前缀,也就是$table_prefix=后面的内容,则您需要同步修改数据库中的表前缀...,修改完成后,如果登录 wordpress 后台成功后,会返回“您没有足够的权限访问这个页面。”...看来手动是行不通了,只好使用 SQL 语句进行局部替换了,SQL 语句如下,在 phpMyAdmin 中选定数据库后,点击工具条中的 SQL 执行如下语句: update `new_usermeta` set `meta_key...`= replace(`meta_key`,'old_','new_')  WHERE `meta_key` like "%old_%"; 以上仅为示例,实际得根据新旧表前缀进行修改: 其中,new_...实际以上 SQL 代码也就是 MySql 的部分替换语句,不会的一起来学习下: 比如,将 the_table 表 the_subject 字段中的 Welcom to 替换成 欢迎光临: update

    2K60

    宝塔面板用frm和ibd文件恢复Mysql数据

    他们解决的很快,原本我以为服务器文件都删除了的,一切都不剩,但是经过了和工程师共同的努力,那边提供了我一个暂时盘,用于存储丢失的数据,最后就是我的所有数据都找回来了,但是,wordpress的数据库文件如果不备份的话...如果你不懂数据表创建的话,那你先看文章,如果看不懂或者一懂半懂就请自己去学习数据库的相关知识!...服务 net stop mysql 或者点击计算机--管理--服务--找到Mysql 然后关闭 3 复制备份的.frm覆盖新建的表.frm 4 开启mysql服务 net start mysql 5....` (`meta_key`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci; 那么添加ROW_FORMAT...` (`meta_key`(191)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci ROW_FORMAT

    2.8K40

    常用MySQL语句搜集整理

    只好到 phpMyAdmin 后台去进行 wp_postmeta 表的部分数据恢复,其中就会用到下文【根据条件导出 mysql 的指定表】的方法,将 meta_key=views 的栏位对应的 meta_value...一、终端登陸 Mysql $mysql -u[用戶名]  -p[password] 例:账号:root,密码:123456,登陆成功的情形如下 [root@localhost ~]# mysql -uroot...students where name = '李山'      d. like:select * from students where name  like  '李%' (注意查询条件中有“%”,则说明是部分匹配...例:从 wp_blog 数据库的 wp_postmeta 表中导出 meta_key=views 的数据到 /home/xyx/Temp.sql 这个文件中 mysqldump -uroot -p123456...wp_blog wp_postmeta --where="meta_key=views" > /home/xyx/Temp.sql 如果是在终端可如下恢复: mysql> use mydb   Reading

    80750

    【说站】WordPress数据库表前缀如何修改?WP数据库表前缀修改教程

    其实为了我们的WP网站更安全,在安装WordPress之前其实就应该将默认的数据库表前缀wp_更改掉,但往往最开始我们都没注意到这个细节问题,那么如果网站装好以后想更改WordPress数据库表前缀应该如何操作呢...方法一、手动修改WordPress表前缀 1、更改mysql数据库里面的数据库前缀; 直接进网站的数据库管理,全选所有表》修改表前缀,WordPress的初始程序只有11张表,后续我们安装各种插件会增加各种各样的表...option_name = replace(option_name,'wp_','wpkl_'); 4、更改wp_usermeta表 表wp_usermeta( 新表为wpkl_usermeta)里面的meta_key...字段值要改掉 update wpkl_usermeta set meta_key = replace(meta_key,'wp_',wpkl_'); 方法二、用插件修改WordPress表前缀(推荐)...用到的插件:WordPress Database Table Prefix Changing 插件无非就是将上述手动操作的四个步骤全部集成到插件里面自动完成: 1、更改mysql数据库里面的数据库前缀;

    1.7K20

    聊一聊安全且正确使用缓存的那些事 —— 关于缓存可靠性、关乎数据一致性

    ,则说明用户不存在),这种如果强行将其删除,可能会造成业务层面的一些逻辑异常。...如果用户查看的帖子是最近1年的,则直接从Redis中查询并返回,如果用户查看的帖子是1年前的,则从MySQL中进行捞取并返回。...,则直接取缓存已有的数据并返回;否则重复上述1、2、3步骤。...图片 对于业务中最常使用的旁路型缓存而言,通常会先读取缓存,如果不存在则去数据库查询,并将查询到的数据添加到缓存中,这样就可以使得后面的请求继续命中缓存。...还是上面的论坛的例子: 用户在互动论坛上点击帖子并查看内容的时候,界面调用查询帖子详情接口时会传入帖子ID,然后后端基于帖子ID先去缓存中查询,如果缓存中存在则直接返回数据,否则会尝试从MySQL中查询数据并返回

    690100

    MySQL LEFT JOIN 默认值,数据过滤,排序的处理

    MySQL LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据,RIGHT JOIN 和 LEFT JOIN 方向相反,其他完全一样,主要理解 LEFT JOIN,RIGHT JOIN...我们直接将商品信息存储在 WordPress 默认的 posts 表里面,当该商品的分销比率不同于系统默认值的时候,我们会在 postmeta 表插入一条记录, meta_key 为 commission...,但是没有单独设置的分销比率的商品返回结果是 null,能否使用默认的分销比率代替 null 值呢?...NULL 的参数,如果所有参数都为 NULL,此函数返回 NULL,当它使用 2 个参数时,和 IFNULL 函数作用相同。...publish' ORDER BY commission+0 DESC, wp_posts.post_date DESC LIMIT 0, 10 首先使用 commission 进行排序,相同的商品,则使用发布时间进行排序

    1.5K10

    woocommerce shortcode短代码调用

    WooCommerce配备了很多shortcode短代码(简码),可以直接在post帖子和page页面内插入内容,方便展示产品、分类等。...即如果你是正常安装woocommerce,它会自动创建cart、checkout、my account三个页面 ---- product短代码 [products]短代码允许您按帖子 ID、SKU、类别...id– 产品的帖子 ID。 menu_order– 菜单顺序,如果已设置(首先显示较小的数字)。 popularity– 购买次数。...ids– 将根据逗号分隔的帖子 ID 列表显示产品。 skus– 将根据逗号分隔的 SKU 列表显示产品。 如果商品未显示,请确保未在“目录可见性”中将其设置为“隐藏”。...因此,如果我们使用来自:产品数据>可变产品>变体>变体名称> SKU,则预计不会显示该 SKU。

    11.2K20

    WordPress 文章查询教程9:如何使用自定义字段(post meta)参数

    我写这一系列文章的目的也是为了方便自己使用这些参数的时候方便查询,所以如果你也是经常进行 WordPress 二次开发的话,建议收藏本文。...如果 compare 的值是 'IN', 'NOT IN', 'BETWEEN', 和'NOT BETWEEN' 这几种情况,它可以是数组,如果 compare 的值是 'EXISTS' 和 'NOT...简单自定义字段查询 获取自定义字段的 key 是 'color',而 value 则任意值都可的文章: $query = new WP_Query( array( 'meta_key' => 'color...' ) ); 获取自定义字段的 value 是 'blue',而 key 则任意值都可的文章: $query = new WP_Query( array( 'meta_value' => 'blue'...) ); 获取自定义字段的 value 是 'blue',而 key 则任意值都可的页面: $args = array( 'meta_value' => 'blue', 'post_type

    1.2K10

    WordPress 技巧:WP_Query 如何同时使用 meta_key 和 ID 或 date 进行排序

    比如使用 ID 排序 $args = array( 'orderby' => 'ID', 'order' => 'DESC', ); $query = new WP_Query( $args ); 如果我们文章是一个商品...,他有价格(price)的参数,我们希望通过价格进行排序: $args = array( 'orderby' => 'meta_value_num', 'order' => 'ASC', 'meta_key...'=> 'price' ); $query = new WP_Query( $args ); 如果好几个商品的价格一样,这样列表刷新,经常会变动,我们让价格一样的商品再按照 ID 进行排序: $args...= array( 'orderby' => 'meta_value_num ID', 'order' => 'ASC', 'meta_key'=> 'price' ); $query = new...'=> 'price' ); $query = new WP_Query( $args ); 这样价格从小到大排序,价格一样,则最新发布的排在前面。

    48930

    python面试题-【二分法查找】给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。

    前言 给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。如果不是,返回索引按顺序插入时的位置。 题目 给定一个已排序的非重复整数数组和一个目标值,如果找到目标,则返回索引。...如果不是,返回索引按顺序插入时的位置。...二分法思想 1.首先从数组的中间元素开始查找,如果该元素正好是目标元素,则搜索结束,否则执行下一步。...3.如果某一步数组为空,则表示找不到目标元素 如下图,数组中有目标元素,查找21 如下图,数组中没有目标元素,查找70 直到 low > high 查找失败 python3 二分法查找 python3...low = mid + 1 else: high = mid - 1 return low # 没找到则返回其位置左边的下标

    87820

    如何在WordPress网站之间共享用户和登录

    `a_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, '1', 'b_capabilities', '...通过上面的mysql命令,插入用户对B站点的权限后,我们就可以正常访问B站的后台了。注意:记得清理cookies!...如果不会MySQL,你也可以使用phpmyadmin使用鼠标点击a_usermeta数据表中meta_key值为a_capabilities记录项前面的复制链接,phpmyadmin会自动跳转到插入功能并填入相应值...capabilities', } } } 上面的代码仅能自动为以后的用户设置权限,并不能给以前的用户设置权限,所以如果需要为以前的用户设置权限,你需要获取所有用户id,然后循环执行上面插入权限的MySQL...如果你的用户注册数据中还有别的字段,那么你可能需要参考上面的代码,将数据写入其中。 注意:本文实现的wordpress共享用户数据,仅能共享注册登录,不能实现自动登录。

    1.9K10

    深入解析sprintf格式化字符串带来的注入隐患!

    注释:如果 % 符号多于 arg 参数,则您必须使用占位符。占位符位于 % 符号之后,由数字和 "\$" 组成。 通过几个例子回顾一下sprintf 例子1: <?...php $num1 = 123456789; $num2 = -123456789; $char = 50; // ASCII 字符 50 是 2 //注释:格式值 "%%" 返回百分号 echo sprintf...break; } 可以看到, php源码中只对15种类型做了匹配, 其他字符类型都直接break了,php未做任何处理,直接跳过,所以导致了这个问题:没做字符类型检测的最大危害就是它可以吃掉一个转义符, 如果...('') OR 1 = 1 /*) AND baz = 39 小结 漏洞利用条件 sql语句进行了字符拼接 拼接语句和原sql语句都用了vsprintf/sprintf 函数来格式化字符串 ps: mysql...= %s $value_clause", $meta_key ) 经过prepare函数处理后得到 vsprintf( "SELECT $type_column FROM $table WHERE meta_key

    1.6K30
    领券