博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL语句_多表联查——插入或者更新
阅读量:2492 次
发布时间:2019-05-11

本文共 1305 字,大约阅读时间需要 4 分钟。

  最近小咸儿根据业务需求,做一个定时同步数据的任务。

业务需求:

  A表要定时将数据同步到B表中,但是这其中还涉及到了其他的表,所以第一步需要进行多表联查。

SELECT	user_id,	user_name,	user_code,	organization_nameFROM	`tc_organization_user` AS tc LEFT JOIN tik_user AS tk ON tc.user_id = tk.id LEFT JOIN tc_organization AS tco ON tco.id = tc.organization_idWHERE	organization_id = '*************'

  将数据查询出来之后,第二步则需要添加记录,这时候需要注意的是,当记录存在时,则执行更新操作。这里就需要用到关键句 on duplicate key update

作用: 这个语句的作用就是,当执行SQL语句时,如果存在该记录则执行更新操作,如果不存在该记录则执行插入操作。

INSERT INTO tim_mentorship_user ( id, user_name, user_code, user_grade, create_time, update_time, operator, creator, remark, is_delete ) SELECT DISTINCT	user_id,	user_name,	user_code,	organization_name,	tk.create_time,	tk.update_time,	tk.operator,	tk.creator,	tk.remark,	tk.is_delete FROM	tc_organization_user AS tc	LEFT JOIN tik_user AS tk ON tc.user_id = tk.id	LEFT JOIN tc_organization AS tco ON tco.id = tc.organization_id WHERE	tk.is_delete = 0 AND	organization_id = '**************'	ON DUPLICATE KEY UPDATE user_name = tk.user_name,	user_code = tk.user_code,	user_grade = tco.organization_name,	create_time = tk.create_time,	update_time = now(),	operator = tk.operator,	creator = tk.creator,	remark = tk.remark,	is_delete = tk.is_delete

注意点: 使用该语句,需要注意两点:

  • 判断该条记录是否存在的标准是什么?也就是说必须有一个字段是唯一不能重复的
  • on duplicate key update 语句是不能添加where条件的

感谢您的阅读~

转载地址:http://kjerb.baihongyu.com/

你可能感兴趣的文章
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>
phpstorm开发工具的设置用法
查看>>
Linux 系统挂载数据盘
查看>>
Git基础(三)--常见错误及解决方案
查看>>
Git(四) - 分支管理
查看>>
PHP Curl发送数据
查看>>
HTTP协议
查看>>
HTTPS
查看>>
git add . git add -u git add -A区别
查看>>
apache下虚拟域名配置
查看>>
session和cookie区别与联系
查看>>
PHP 实现笛卡尔积
查看>>
Laravel中的$loop
查看>>
CentOS7 重置root密码
查看>>
Centos安装Python3
查看>>
PHP批量插入
查看>>
laravel连接sql server 2008
查看>>
Laravel 操作redis的各种数据类型
查看>>
Laravel框架学习笔记之任务调度(定时任务)
查看>>