SQL语句_多表联查——插⼊或者更新
  最近⼩咸⼉根据业务需求,做⼀个定时同步数据的任务。
业务需求:
  A表要定时将数据同步到B表中,但是这其中还涉及到了其他的表,所以第⼀步需要进⾏多表联查。
SELECT
user_id,
user_name,
user_code,
organization_name
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
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 DI STINCT
user_id,
user_name,
user_code,
organization_name,
tk.update_time,
tk.operator,
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 =0AND
organization_id ='**************'
ON DUPLICATE KEY UPDATE user_name = tk.user_name,
user_code = tk.user_code,
user_grade = anization_name,
create_time = tk.create_time,
update_time =now(),
operator = tk.operator,
creator = tk.creator,
sql left join 多表连接remark = tk.remark,
is_delete = tk.is_delete
注意点: 使⽤该语句,需要注意两点:
判断该条记录是否存在的标准是什么?也就是说必须有⼀个字段是唯⼀不能重复的
on duplicate key update 语句是不能添加where条件的
感谢您的阅读~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。