玖叶教程网

前端编程开发入门

mysql子查询联表更新

假设课程表courses有id、name字段。发现name有重复,且重复最大数量为2。我们对id小的一条记录的name更新为name+其它字符。

1、将courses全部重复name统计写入临时表tempname

2、子查询找到课程表中name有重复,且重复是最小id的哪条记录id

select id from courses a
where id = (select min(id) from courses t where t.name = a.name)
and name in (select name from tempname)

2、子查询联表更新,如下:

update courses, (
select id from courses a
where id = (select min(id) from courses t where t.name = a.name)
and name in (select name from tempname)
) tb
set courses.name=CONCAT(courses.name,'-',RIGHT(courses.id,2))
where courses.id =tb.id

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言